我有一个有很多行的大文件,大多数行都是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的行,在不破坏代码的情况下什么也不做,然后转到文件的下一行并进行操作。如何使用try
和except
?
答案 0 :(得分:1)
不使用任何编解码器打开文件。然后,逐行读取文件并尝试解码UTF-8中的每一行。如果这引发异常,请跳过该行。
一种完全不同的方法是告诉编解码器替换或忽略有缺陷的字符。这不会跳过这些行,但你似乎并不太关心所包含的数据,所以它可能是另一种选择。