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

 Andy 发布于 2023-02-10 02:04

我正在迭代一个文件

for line in io.TextIOWrapper(readFile, encoding = 'utf8'):

当文件包含以下行时

b'"""\xea\x11"\t1664\t507\t137\t2\n'

这会产生以下异常

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

如何让我的脚本忽略这些行并继续使用好的行?

2 个回答
  • 如果你真的想忽略整行,如果它有任何无效字符,你必须知道有无效字符.这意味着你不能使用TextIOWrapper,而必须手动解码线.你想要做的是:

    for bline in readFile:
        try:
            line = bline.decode('utf-8')
        except UnicodeDecodeError:
            continue
        # do stuff with line
    

    但请注意,这不会给您与使用文本文件相同的换行符; 如果你需要,你也需要明确这一点.

    2023-02-10 02:41 回答
  • errors='ignore'参数传递给TextIOWrapper.此处指定了其他可用选项.

    2023-02-10 02:54 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有