好久没写博客了,今天又写一个流水账。Python的 json 和 Vim 的替换

来源:互联网 发布:为啥淘宝无法付款 编辑:程序博客网 时间:2024/05/16 15:55

因为项目的缘故,要收集网上的数据。其中有一个数据是js代码的json数据,而我想用python来解析。因此查了一下解析的方法,在python 2.6之后python就自带json库。而我用的python 3.2 则是用 load 和 loads 读取。即:

import jsonfile = 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 也比较奇怪