Страницы

Поиск по вопросам

четверг, 19 декабря 2019 г.

Проблема с кодировкой при записи в файл: UnicodeEncodeError: 'charmap' codec can't encode character '\u039a'

#python #python_3x #utf_8 #unicode


Требуется пропарсить vk по заданым параметрам и записать результат в файл на Python 3.5. 

search_result = api.users.search(sort=sort_index, sex=sex_index, age_to=age_index,
offset=offset_index, count=count_index, country=country)

result = open('result.txt','a')
while index != (count_index - offset_index):
    result.write(str(search_result[index + 1]))
    result.write('\n')
    index += 1
result.close()


Получаю ошибку:

Traceback (most recent call last):
  File "E:***\vkscript.py", line 19, in 
    result.write(str(search_result[index + 1]))
  File "C:\Python\lib\encodings\cp1251.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u039a' in position 16:
character maps to 

    


Ответы

Ответ 1



Надо попробовать указать кодировку файла result = open('result.txt','a', encoding='utf-8')

Ответ 2



Добавьте параметр encoding. Просто, по умолчанию там взялась кодировка cp1251: open('result.txt', mode='a', encoding='utf8') И чтобы не пришлось вручную вызывать close, используйте менеджер контекста, он сам закроет: with open('result.txt', mode='a', encoding='utf8') as f: while index != (count_index - offset_index): f.write(str(search_result[index + 1])) f.write('\n') index += 1

Ответ 3



Мне помогло: with open('books.csv', 'wt', encoding='utf8') as fout: fout.write(books)

Комментариев нет:

Отправить комментарий