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


но опять же это дает ту же ошибку.
что же мне тогда делать? Пожалуйста помочь.

472   7  

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

    Ничего не найдено.