首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有for循环python3的python3解析文件

带有for循环python3的python3解析文件
EN

Stack Overflow用户
提问于 2016-03-10 18:23:11
回答 1查看 1.1K关注 0票数 2

当我在文件中循环行时,我得到了UnicodeDecodeError。

代码语言:javascript
复制
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。有什么主意吗??

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-10 21:19:33

您需要以二进制模式打开文件,并一次解码一行。试试这个:

代码语言:javascript
复制
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中得到的结果:

代码语言:javascript
复制
Line: 16, Offset: 6, invalid start byte

果然,第16行,位置6是坏字节。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35924336

复制
相关文章

相似问题

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