Вот мой код,
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")
решит проблему.источник
chardet
. Вот один вкладыш (послеimport chardet
):chardet.detect(open(in_file, 'rb').read())['encoding']
. Проверьте этот ответ для деталей: stackoverflow.com/a/3323810/615422Также сработало для меня, ISO 8859-1 собирается сэкономить, хахаха, в основном, если использовать API распознавания речи
Пример:
источник
Ваш файл на самом деле не содержит данных в кодировке utf-8, он содержит другую кодировку. Выясните, что это за кодировка и используйте ее в
open
вызове.Например, в кодировке Windows-1252
0xe9
символ будетé
.источник
Попробуйте это прочитать с помощью панд
источник
Если вы используете
Python 2
следующее будет решение:Поскольку
encoding
параметр не работает сopen()
, вы получите следующую ошибку:источник
Python 2
'ISO-8859-1'
также известен как'latin-1'
или'latin1'
.Вы можете решить проблему с:
'rb' читает файл в двоичном режиме. Узнайте больше здесь . Надеюсь, это поможет!
источник
Это работает:
или:
источник
Если кто-то ищет это, это пример для преобразования файла CSV в Python 3:
источник
Иногда, когда
open(filepath)
вfilepath
действительности нет файла, может возникнуть та же ошибка, поэтому сначала убедитесь, что файл, который вы пытаетесь открыть, существует:надеюсь, это поможет.
источник
Вы можете попробовать так:
источник