У меня есть большой файл, который имеет много строк, большинство строк - utf8, но похоже, что некоторые строки не являются utf8. Когда я пытаюсь читать строки с кодом, как это:UnicodeDecodeError: 'utf8' в Python 2.7
in_file = codecs.open(source, "r", "utf-8")
for line in in_file:
SOME OPERATIONS
Я получаю следующее сообщение об ошибке:
for line in in_file:
File "C:\Python27\lib\codecs.py", line 681, in next
return self.reader.next()
File "C:\Python27\lib\codecs.py", line 612, in next
line = self.readline()
File "C:\Python27\lib\codecs.py", line 527, in readline
data = self.read(readsize, firstline=True)
File "C:\Python27\lib\codecs.py", line 474, in read
newchars, decodedbytes = self.decode(data, self.errors)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xd8 in position 0: invalid continuation byte
То, что я хотел бы сделать то, что для линий, которые не являются ни utf8 делать ничего, не нарушая кода, а затем перейдите к следующей строке в файле и выполните мои операции. Как я могу это сделать с try
и except
?
Откуда вы знаете файл * в основном * UTF-8? Возможно, это CP1252 или Latin-1, тогда это будет * в основном * ASCII (подмножество UTF-8), но вы все равно выбрали неправильный кодек. –
Вы можете сказать 'codecs.open()' обрабатывать ошибки, заменяя символы, которые он не может декодировать с помощью заполнителей или вообще игнорировать их, но вы должны убедиться, что у вас действительно есть правильный кодек здесь. –
Я знаю, что файл в основном UTF-8, потому что я смотрю контент, и я вижу, что это не-английский язык. – TJ1