发布
社区首页 >问答首页 >如何忽略文件中的无效行?

如何忽略文件中的无效行?
EN

Stack Overflow用户
提问于 2013-12-17 01:13:24
回答 3查看 3.4K关注 0票数 5

我在迭代一个文件

代码语言:javascript
代码运行次数:0
复制
for line in io.TextIOWrapper(readFile, encoding = 'utf8'):

当文件包含以下行时

代码语言:javascript
代码运行次数:0
复制
b'"""\xea\x11"\t1664\t507\t137\t2\n'

生成以下异常的

UnicodeDecodeError:'utf-8‘编解码器无法解码位置3中的字节0 0xea :无效的连续字节

我怎样才能让我的脚本忽略这些行,并继续使用好的行呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-17 01:22:44

如果您实际上想忽略整行(如果它有任何无效字符),则必须知道其中有无效字符。这意味着您不能使用TextIOWrapper,而必须手动解码行。你想做的是:

代码语言:javascript
代码运行次数:0
复制
for bline in readFile:
    try:
        line = bline.decode('utf-8')
    except UnicodeDecodeError:
        continue
    # do stuff with line

但是,请注意,这并不会给您提供与使用文本文件相同的换行符行为;如果您需要这样做,您也需要明确这一点。

票数 7
EN

Stack Overflow用户

发布于 2013-12-17 01:18:38

errors='ignore'参数传递给TextIOWrapper。还有其他选项可作为指定的这里

票数 7
EN

Stack Overflow用户

发布于 2013-12-17 01:19:12

我认为您可以传递errors参数:

代码语言:javascript
代码运行次数:0
复制
io.TextIOWrapper(readfile, encoding='utf-8', errors='ignore')
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20624144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档