当我在文件中循环行时,我得到了UnicodeDecodeError。
with open(somefile,'r') as f:
for line in f:
#do something当我使用python3.4时,就会发生这种情况。一般来说,我有一些文件,其中包含一些没有UTF-8字符。我想逐行解析文件,找到问题所在的行,并在非utf-8出现的位置得到准确的索引。我已经准备好了它的代码,但是它可以在python2.7.9中运行,但是在python3.4下,当执行for循环时,我得到了UnicodeDecodeError。有什么主意吗??
发布于 2016-03-10 21:19:33
您需要以二进制模式打开文件,并一次解码一行。试试这个:
with open('badutf.txt', 'rb') as f:
for i, line in enumerate(f,1):
try:
line.decode('utf-8')
except UnicodeDecodeError as e:
print ('Line: {}, Offset: {}, {}'.format(i, e.start, e.reason))下面是我在Python3中得到的结果:
Line: 16, Offset: 6, invalid start byte果然,第16行,位置6是坏字节。
https://stackoverflow.com/questions/35924336
复制相似问题