Я использую Python2 и пытаюсь поместить много слов французского словаря в заданный объект, но у меня всегда возникают проблемы с кодировкой слов с акцентом.
Это мой основной код (эта часть читает текстовый файл):
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
from sets import Set
with open('.../test_unicode.txt', 'r') as word:
lines = word.readlines()
print(lines)
А это результат моей печати:
['\xc3\xa9l\xc3\xa9phants\n', 'bonjour\n', '\xc3\xa9l\xc3\xa8ves\n']
Это мой текстовый файл для этого примера:
éléphants
bonjour
élèves
После этого это продолжение моего основного кода, который помещает слова в набор Python:
dict_word = Set()
for line in lines:
print(line)
dict_word.add(line[:-1].upper()) #Get rid of the '\n'
print(dict_word)
Это результат моей печати:
Set(['\xc3\xa9L\xc3\xa8VES', 'BONJOUR', '\xc3\xa9L\xc3\xa9PHANTS'])
Я хочу, чтобы этот вывод:
Set(['ÉLÈVES', 'BONJOUR', 'ÉLÉPHANTS'])
Но я не могу понять, как получить этот результат. Я пробовал много способов, включая размещение этой строки '# -- encoding: utf-8 --' в верхней части моего файла. Я также пробовал «с codecs.open()», но это тоже не сработало.
Спасибо!
sys.stdout.encoding
поддерживает символы, она будет напечатана. - person tdelaney   schedule 15.07.2020sys.stdout.encoding
, иначе строка байтов не будет переведена. - person Mark Ransom   schedule 15.07.2020str
, а ваш терминал - utf-8, он будет печатать. Вы получаете строку с кодировкой utf-8, и, поскольку это не строкаunicode
, она не декодируется, но ее формат ожидает терминал, и она все еще работает. utf-8 и до сих пор работает. - person tdelaney   schedule 15.07.2020