我正在迭代一个文件
for line in io.TextIOWrapper(readFile, encoding = 'utf8'):
当文件包含以下行
时b'"""\xea\x11"\t1664\t507\t137\t2\n'
生成以下异常
UnicodeDecodeError:'utf-8'编解码器无法解码位置的字节0xea 3:无效的连续字节
如何让我的脚本忽略这些行并继续使用好的行?
答案 0 :(得分:6)
将errors='ignore'
参数传递给TextIOWrapper
。还有其他可用的选项here。
答案 1 :(得分:6)
如果你确实想要忽略整行,如果它有任何无效字符,你必须知道有无效字符。这意味着您无法使用TextIOWrapper
,而必须手动解码这些行。你想要做的是:
for bline in readFile:
try:
line = bline.decode('utf-8')
except UnicodeDecodeError:
continue
# do stuff with line
但请注意,这并不会像使用文本文件那样提供相同的换行符;如果你需要,你也需要明确这一点。
答案 2 :(得分:3)
我认为您可以传递errors
参数:
io.TextIOWrapper(readfile, encoding='utf-8', errors='ignore')