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 的行,在不破坏代码的情况下不做任何事情,然后转到文件中的下一行并执行我的操作。我怎样才能用 try
和 except
做到这一点?
打开没有任何编解码器的文件。然后,逐行读取文件并尝试从 UTF-8 解码每一行。如果引发异常,请跳过该行。
一种完全不同的方法是告诉编解码器替换或忽略错误字符。这不会跳过这些行,但你似乎并不太关心包含的数据,所以它可能是一个替代方案。
我有一个很大的文件,有很多行,大部分行都是 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
做到这一点?
打开没有任何编解码器的文件。然后,逐行读取文件并尝试从 UTF-8 解码每一行。如果引发异常,请跳过该行。
一种完全不同的方法是告诉编解码器替换或忽略错误字符。这不会跳过这些行,但你似乎并不太关心包含的数据,所以它可能是一个替代方案。