免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2059 | 回复: 0
打印 上一主题 下一主题

已搞定,请版主删帖。《利用python进行数据分析》开篇就搞不定了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-08-23 23:50 |只看该作者 |倒序浏览
本帖最后由 sculida 于 2015-08-24 00:15 编辑

搞定了,请版主删了这贴吧
原来是最后一行文本内容不完整,删掉最后一行即可。
------------------
谢谢大家!
开篇里这个例子,是逐行读取文本文件1usagov
1. 经UE分析,估计它的字符集是utf-8,但是open该文件的时候会报错
json loads
Traceback (most recent call last):
  File "./1.py", line 8, in <module>
    records = [json.loads(line) for line in open(path, 'r',encoding='utf-8',errors='ignore')]
  File "./1.py", line 8, in <listcomp>
    records = [json.loads(line) for line in open(path, 'r',encoding='utf-8',errors='ignore')]
  File "/usr/lib/python3.4/json/__init__.py", line 318, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.4/json/decoder.py", line 343, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.4/json/decoder.py", line 359, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Unterminated string starting at: line 1 column 206 (char 205)
估计是某一行的某个文字不是utf-8,所以解码失败。现在该怎么办?用for循环逐行读取文件,然后,捕捉异常,忽略这一行?
2. open函数的参数errors里说可以写ignore,但是不知道怎么这次没用。还有help(open)里说可以参考help(codecs.Codec),但是提示:
NameError: name 'codecs' is not defined
怎么把这个codecs弄出来?
--------------
代码如下:
#!/usr/bin/python3.4
#-*- coding:utf-8 -*-
import json
#path = 'example.dat'
path = '1usagov.tmp'
open(path, 'r',encoding='utf-8',errors='ignore')
print('json loads')
records = [json.loads(line) for line in open(path, 'r',encoding='utf-8',errors='ignore')]
--------------
1usagov.tmp参见附件 1usagov.zip (164.72 KB, 下载次数: 12)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP