UnicodeDecodeError:Python 2.7中的'utf8'

时间:2015-01-24 07:49:44

标签: python-2.7 utf-8 decode

我有一个有很多行的大文件,大多数行都是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

来完成此操作

1 个答案:

答案 0 :(得分:1)

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

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