Подтвердить что ты не робот

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

Но снова он дает ту же ошибку. что я должен делать тогда! Пожалуйста, помогите.

4b9b3361

Ответ 1

Как предложил Марк Рэнсом, я нашел правильную кодировку для этой проблемы. Кодировка была "ISO-8859-1", поэтому замена open("u.item", encoding="utf-8") на open('u.item', encoding = "ISO-8859-1") решит проблему.

Ответ 2

Также работал у меня, ISO 8859-1 собирается экономить много, хахаха, в основном, если использовать API распознавания речи

Пример:

file = open('../Resources/' + filename, 'r', encoding="ISO-8859-1");

Ответ 3

В вашем файле фактически нет данных, закодированных utf-8, он содержит некоторую другую кодировку. Выясните, что такое кодировка, и используйте ее в вызове open.

В кодировке Windows-1252, например, 0xe9 будет символом é.

Ответ 4

Попробуйте это прочитать с помощью pandas

pd.read_csv('u.item', sep='|', names=m_cols , encoding='latin-1')

Ответ 5

Если вы используете Python 2, то будет решение:

import io
for line in io.open("u.item", encoding="ISO-8859-1"):
    # do something

Поскольку параметр encoding не работает с open(), вы получите следующую ошибку:

TypeError: 'encoding' is an invalid keyword argument for this function

Ответ 6

Если кто-то ищет их, это пример для преобразования CSV файла в Python 3:

try:
    inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
    pass

Ответ 7

Иногда, когда open(filepath) в котором filepath самом деле не является файлом, может возникнуть та же ошибка, поэтому сначала убедитесь, что файл, который вы пытаетесь открыть, существует:

import os
assert os.path.isfile(filepath)

надеюсь, это поможет.

Ответ 8

Самый простой из всех решений:

Используйте Pandas для чтения файла, его очень просто:

import pandas as pd
data = pd.read_csv('file_name.csv', encoding='utf-8')

Ответ 9

python3: чтение из файла CSV здесь, метод декодирования 'utf-8' не будет работать ZOMATO.csv - это мое имя файла CSV

ZOMATO_df=pd.read_csv(io.StringIO(uploaded['ZOMATO.csv'].decode('ISO-8859-1')))

Ответ 10

Вы можете решить проблему с:

for line in open(your_file_path, 'rb'):

'rb' читает файл в двоичном режиме. Узнайте больше здесь. Надеюсь, это поможет!