Ответ 1
Как предложил Марк Рэнсом, я нашел правильную кодировку для этой проблемы. Кодировка была "ISO-8859-1", поэтому замена open("u.item", encoding="utf-8")
на open('u.item', encoding = "ISO-8859-1")
решит проблему.
Вот мой код,
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")
решит проблему.
Также работал у меня, ISO 8859-1 собирается экономить много, хахаха, в основном, если использовать API распознавания речи
Пример:
file = open('../Resources/' + filename, 'r', encoding="ISO-8859-1");
В вашем файле фактически нет данных, закодированных utf-8, он содержит некоторую другую кодировку. Выясните, что такое кодировка, и используйте ее в вызове open
.
В кодировке Windows-1252, например, 0xe9
будет символом é
.
Попробуйте это прочитать с помощью pandas
pd.read_csv('u.item', sep='|', names=m_cols , encoding='latin-1')
Если вы используете 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
Если кто-то ищет их, это пример для преобразования 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)
надеюсь, это поможет.
Самый простой из всех решений:
Используйте Pandas для чтения файла, его очень просто:
import pandas as pd
data = pd.read_csv('file_name.csv', encoding='utf-8')
python3: чтение из файла CSV здесь, метод декодирования 'utf-8' не будет работать ZOMATO.csv - это мое имя файла CSV
ZOMATO_df=pd.read_csv(io.StringIO(uploaded['ZOMATO.csv'].decode('ISO-8859-1')))
Вы можете решить проблему с:
for line in open(your_file_path, 'rb'):
'rb' читает файл в двоичном режиме. Узнайте больше здесь. Надеюсь, это поможет!