UnicodeDecodeError: 'utf8' in Python 2.7

UnicodeDecodeError: 'utf8' in Python 2.7

我有一个很大的文件,有很多行,大部分行都是 utf8,但看起来有几行不是 utf8。当我尝试使用这样的代码读取行时:

 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 的行,在不破坏代码的情况下不做任何事情,然后转到文件中的下一行并执行我的操作。我怎样才能用 tryexcept 做到这一点?

打开没有任何编解码器的文件。然后,逐行读取文件并尝试从 UTF-8 解码每一行。如果引发异常,请跳过该行。

一种完全不同的方法是告诉编解码器替换或忽略错误字符。这不会跳过这些行,但你似乎并不太关心包含的数据,所以它可能是一个替代方案。