Ось мій код,
for line in open('u.item'):
#read each line
щоразу, коли я запускаю цей код, він видає наступну помилку:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2892: invalid continuation byte
Я спробував вирішити цю проблему і додати додатковий параметр в open(), код виглядає наступним чином;
for line in open('u.item', encoding='utf-8'):
#read each line
Але знову видає ту ж помилку. Що ж мені тоді робити! Будь ласка, допоможіть.
Як і пропонував Марк Рансом, я знайшов правильне кодування для цієї проблеми. Це було кодування "ISO-8859-1", тому заміна open("u.item", encoding="utf-8")
на open('u.item', encoding = "ISO-8859-1")
вирішить проблему.
Ваш файл насправді не містить даних у кодуванні utf-8, він містить якесь інше кодування. З'ясуйте, що це за кодування і використовуйте його у виклику open
.
Наприклад, у кодуванні Windows-1252 символом 0xe9
буде символ é
.
Якщо хтось шукає їх, це приклад для перетворення CSV-файлу на Python 3:
try:
inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
pass