我在迭代一个文件
for line in io.TextIOWrapper(readFile, encoding = 'utf8'):
当文件包含以下行时
b'"""\xea\x11"\t1664\t507\t137\t2\n'
生成以下异常的
UnicodeDecodeError:'utf-8‘编解码器无法解码位置3中的字节0 0xea :无效的连续字节
我怎样才能让我的脚本忽略这些行,并继续使用好的行呢?
发布于 2013-12-17 01:22:44
如果您实际上想忽略整行(如果它有任何无效字符),则必须知道其中有无效字符。这意味着您不能使用TextIOWrapper
,而必须手动解码行。你想做的是:
for bline in readFile:
try:
line = bline.decode('utf-8')
except UnicodeDecodeError:
continue
# do stuff with line
但是,请注意,这并不会给您提供与使用文本文件相同的换行符行为;如果您需要这样做,您也需要明确这一点。
发布于 2013-12-17 01:18:38
将errors='ignore'
参数传递给TextIOWrapper
。还有其他选项可作为指定的这里。
发布于 2013-12-17 01:19:12
我认为您可以传递errors
参数:
io.TextIOWrapper(readfile, encoding='utf-8', errors='ignore')
https://stackoverflow.com/questions/20624144
复制相似问题