因为项目的缘故,要收集网上的数据。其中有一个数据是js代码的json数据,而我想用python来解析。因此查了一下解析的方法,在python 2.6之后python就自带json库。而我用的python 3.2 则是用 load 和 loads 读取。即:
import json
file = open("data", "r")
jsonData = json.load(file.read())
# 或者
jsonData = json.loads(file.read())
其中 load 读取的是
{"id":"1001","name":"中国"}
这样的json数据,返回的是一个python的字典类型。
而 loads 读取的是
[{"id":"1001","name":"中国"},{"id":"1002","name":"美国"}]
这样的json数据,返回的是一个 list
但是直接用python来读取会报错,因为python的json格式和js的格式不同。python的读取json时要求key和value都是字符串,二js 似乎没那么严格。不过我不熟js因此不确定。比如我获取到的json是
{"id":1001,"name":"中国"}
那么用python直接读就会报错,因为 1001 不是字符串。
然后我就用vim去替换,把所有数字都变为字符串。
通过观察可以得出,要替换的数字是:冒号 数字 逗号 的形式,即 :\d+,
因此可以写这样的命令
:s/:\(\d\+\),/:"\1",/g
由于vim的正则比语法较奇怪,所以多了好多斜线。并且vim的分组捕获方法不是 $1 而是 \1 也比较奇怪