Читаю данные с хед хантера, пишу их в файл. Все хорошо. Когда пытаюсь принтануть - получаю трейсбэк:
данные сохранены
Traceback (most recent call last):
File “D:\py_projects\job-parsing-k4\src\tmp.py”, line 25, in <module>
print(res)
File “C:\python 3.11.2\Lib\encodings\cp1251.py”, line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeEncodeError: ‘charmap’ codec can't encode character ‘\u0138’ in position 147082: character maps to <undefined>
Process finished with exit code 1
Собственно, сам код.
import requests import json FileName = 'test.json' def get_data(): params = {'area': 113, 'currency': 'RUR', 'page': 0, 'per_page': 100, 'only_with_salary': True, 'search_field': 'name', 'text': 'python', 'salary': 200000} req = requests.get('https://api.hh.ru/vacancies', params) data = req.content.decode('utf-8') req.close() return data def json_load(): with open(FileName, encoding='utf-8') as f: j = json.load(f) return j jsObj = json.loads(get_data()) with open(FileName, 'w', encoding='utf-8') as f: f.write(json.dumps(jsObj, ensure_ascii=False, indent=2)) print('данные сохранены') res = json_load() print(res)
Путем мучений выяснил, что ошибка возникает из-за строки
“Понимание ĸаĸ работает асинхронность в <highlighttext>python</highlighttext> и знаĸомство с asyncio. Опыт работы с микросервисной архитектурой. Опыт работы с FastAPI. ”,
а конкретно, из-за букв “ĸ” в словах “ĸаĸ” и “знаĸомство”, потому что это странные буквы с кодом ‘\u0138’, который дает ошибку.
Помогите, как сделать, чтобы в файле лежали только нормальные данные, которые не будут давать ошибку в принте?