Python – декодировать с помощью utf-8-sig?

Я работаю с REST API и не могу вернуть данные JSON. Python возвращает непредвиденную спецификацию UTF-8 (декодировать с помощью utf-8-sig).

 r = wcapi.get("products")
 text = r.json().decode("utf-8-sig", errors="replace")
 print (text)

Я попробовал это, но получил ошибку - требуется байтовый объект, а не 'str'.

 text = json.load(codecs.decode(r.text, 'utf-8-sig'))

Как распечатать данные JSON? В идеале я хочу избежать r.text().


person Kiril Climson    schedule 02.04.2018    source источник
comment
.json() и .text уже декодирует. Используйте .content напрямую   -  person juanpa.arrivillaga    schedule 02.04.2018
comment
Ах, не повезло! .content() ничего не декодирует из-за UTF-8-Sig!   -  person Kiril Climson    schedule 03.04.2018


Ответы (1)


Вот готовый код для взаимодействия с WooCommerce REST API без каких-либо проблем с UTF-8-sig. :)

# WC API (secret keys) defined in a seperate statement.
# Get a response with all the products.
response = wcapi.get("products")
response2 = response.text
text = response2.encode('utf8')[3:].decode('utf8')
# Transform json input to python objects
info = json.loads(text)

# Loop across response.
# Gets the product ID using the SKU
for d in info:
    if d['sku'] == "SKU-CODE":
        print ("Found a match!)
        break
person Kiril Climson    schedule 07.04.2018