例如:
'''{
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加好雙引號之後,假如我要把 卐
替换回:
,那么 卐
替換回:
,那麼 選什麼特殊字元最妥呢?