Heim > Fragen und Antworten > Hauptteil
例如:
'''{
colorSize: [{
"Color": "超窄边IPS",
"SkuId": 1365289,
"Size": "27英寸"
}, {
"Color": "21:9超宽IPS曲面",
"SkuId": 1742140,
"Size": "29英寸"
}, {
"Color": "17英寸(TN,5:4方屏)",
"SkuId": 1032147,
"Size": "17英寸"
}],
warestatus: 1,
shangjiazizhi: false
}'''
为了给key加双引号,必需先选中之
因为内容带有“:”,
(\w+):
,误处理"21:9超宽IPS曲面"
[{,]\s*(\w+):
,误处理"17英寸(TN,5:4方屏)"
有什么比较好的处理方法呢?
天蓬老师2017-04-18 09:18:41
两种方案
一种像@raidou说的使用demjson
一种使用pyexecjs
上代码
import execjs
import demjson
str = '''
{
colorSize: [{
"Color": "超窄边IPS",
"SkuId": 1365289,
"Size": "27英寸"
}, {
"Color": "21:9超宽IPS曲面",
"SkuId": 1742140,
"Size": "29英寸"
}, {
"Color": "17英寸(TN,5:4方屏)",
"SkuId": 1032147,
"Size": "17英寸"
}],
warestatus: 1,
shangjiazizhi: false
}
'''
print demjson.decode(str)
print execjs.eval(str)
天蓬老师2017-04-18 09:18:41
手机版不能看到完整标题,能回复一下吗
手机版还不能回复评论,恼火
更新一下,前面匹配一个空格
\s([^"]+):
或者前面匹配一个行首
^([^"]+):
PHPz2017-04-18 09:18:41
自己解决了,简单说一下:
最关键是这些丧心病狂的:
号必然出现在成对的"
里
因为双引号总是成对出现且不交叉
用 re.sub 把成对的双引号过滤,然后滤出结果交给函数处理:将双引号中间的冒号替换成特殊字符,为了描述方便我把这个字符称为 卐
再用之前带冒号的正则处理替换后不带内容冒号的结果
那么新问题来了,key加好双引号之后,假如我要把 卐
替换回:
,那么 卐
选择什么特殊字符最妥呢?