#python #json #utf_8
Есть простая функция:
def get_nbu():
URL = 'https://api.buh.privatbank.ua/ratenbu.php?year=1993'
r = requests.get(URL)
date = r.json() #<--- json.decoder.JSONDecodeError
return date
При попытке преобразовать полученный ответ в JSON получаю ошибку: Unexpected UTF-8
BOM (decode using utf-8-sig).
Я нашел способы декодирования из файла но не могу найти решения для декодирования
резултата GET-запроса (переменной). Как это решается?
Ответы
Ответ 1
Что-то в Приватбанке накосячили, т.к. в начале строки аж 3 сивмола BOM: In [79]: r.text Out[79]: '\ufeff\ufeff\ufeff[{"rate_date":"01.05.1993","rate_value":"240"},{"rate_date":"01.03.1993","rate_value":"100"}]' поэтому самым простым представляется такой "костыль": In [81]: r.text.lstrip('\ufeff') Out[81]: '[{"rate_date":"01.05.1993","rate_value":"240"},{"rate_date":"01.03.1993","rate_value":"100"}]' In [82]: import json In [83]: items = json.loads(r.text.lstrip('\ufeff')) In [84]: items Out[84]: [{'rate_date': '01.05.1993', 'rate_value': '240'}, {'rate_date': '01.03.1993', 'rate_value': '100'}]
Комментариев нет:
Отправить комментарий