UnicodeDecodeError: кодек 'utf-8' не может декодировать байт
вот мой код
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
но опять же это дает ту же ошибку.
что же мне тогда делать? Пожалуйста помочь.
7 ответов:
как предложил Марк Рэнсом, я нашел правильную кодировку для этой проблемы. Кодировка была "ISO-8859-1", поэтому замена
open("u.item", encoding="utf-8")сopen('u.item', encoding = "ISO-8859-1")решит проблему.
ваш файл на самом деле не содержит кодированных данных utf-8, он содержит некоторые другие кодировки. Выяснить, что это кодировка и использовать его в
openзвонок.в кодировке Windows-1252 например
0xe9будет символé.
попробуйте это прочитать с помощью панд
pd.read_csv('u.item', sep='|', names=m_cols , encoding='latin-1')
также работал для меня, ISO 8859-1 собирается сэкономить много, хахаха, в основном при использовании API распознавания речи
пример:
file = open('../Resources/' + filename, 'r', encoding="ISO-8859-1");
если вы используете
Python 2следующее решение:import io for line in io.open("u.item", encoding="ISO-8859-1"): # do something, потому что
Если кто-то ищет их, это пример для преобразования файла CSV в Python 3:
try: inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"') except IOError: pass
иногда, когда
open(filepath), в которомfilepathна самом деле это не файл будет сделать ту же ошибку, поэтому сначала убедитесь, что файл, который вы пытаетесь открыть существует:import os assert os.path.isfile(filepath)надеюсь, что это поможет.
Comments