Здравствуйте! Не могу победить проблему с кодировкой.
Читаю данные с хед хантера, пишу их в файл. Все хорошо. Когда пытаюсь принтануть - получаю трейсбэк:
данные сохранены
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
Собственно, сам код.
Путем мучений выяснил, что ошибка возникает из-за строки
“Понимание ĸаĸ работает асинхронность в <highlighttext>python</highlighttext> и знаĸомство с asyncio. Опыт работы с микросервисной архитектурой. Опыт работы с FastAPI. ”,
а конкретно, из-за букв “ĸ” в словах “ĸаĸ” и “знаĸомство”, потому что это странные буквы с кодом ‘\u0138’, который дает ошибку.
Помогите, как сделать, чтобы в файле лежали только нормальные данные, которые не будут давать ошибку в принте?
Читаю данные с хед хантера, пишу их в файл. Все хорошо. Когда пытаюсь принтануть - получаю трейсбэк:
данные сохранены
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
Собственно, сам код.
Python:
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’, который дает ошибку.
Помогите, как сделать, чтобы в файле лежали только нормальные данные, которые не будут давать ошибку в принте?