python 中json小记

发现果真还是编程知识知道的太少,之前一直没法解决的问题发现其实是有途径的,而且是很简单,之前一直心心念,突然遇到了这种知识,豁然开朗。小记一下。
python中的json
网络上有时候爬虫啊什么的都会遇到json格式文件,当时只是不晓得怎么下手,因为用python中的f = open('myfile.txt'),f.readline()返回的都是字符串化的字典,原来json就是专门处理这个的,当时自己学到json时觉得好像输出并没有什么变化,觉得没啥用处,自己见识太少了。
如果处理一个json格式文件:

import json
path = 'mypath/myfile.txt'  #或者是json格式文件
data = open(path)
records = [json.loads(line) for line in data]
Need = [rec['myNeed'] for rec in records]

如果遇到这种报错:

>>> json.loads(r'C:\Users\xiaodong\Desktop\2.txt')

Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    json.loads(r'C:\Users\xiaodong\Desktop\2.txt')
  File "C:\Python27\lib\json\__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\json\decoder.py", line 364, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Python27\lib\json\decoder.py", line 382, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
>>> [json.loads(line) for line in open(r'C:\Users\xiaodong\Desktop\2.txt')]

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    [json.loads(line) for line in open(r'C:\Users\xiaodong\Desktop\2.txt')]
  File "C:\Python27\lib\json\__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\json\decoder.py", line 364, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Python27\lib\json\decoder.py", line 380, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 1 column 2 (char 1)
>>> 

这是因为json格式只能用双引号,用了单引号就会出错。所以把格式改成双引号一般问题就解决了,如果还没解决,就是文件不是json格式的,json文件是字典形式,以键值对的方式存储的,检查看看你的读取文件是不是符合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值