这是Json变种吗? [{ID:0,N:' 3ergy',SIP:'&#39 ;,

时间:2014-11-18 05:33:55

标签: python json python-2.7

我从Web服务中获得了大量类似Json的数据。数据格式与Json相同,但是:

  1. 名称标识符不在引号中。
  2. 该值以单引号显示。
  3. 样本将是:

    [{ID:0,N:'3ergy',SIP:'',NC:'502',R:'',....
    

    这是一种众所周知的格式吗?是否有可以将其转换为列表的Python工具?

2 个答案:

答案 0 :(得分:1)

由于 DrC 建议我能够解析您提供的pyyaml行。

import yaml

data = "[{ID:0,N:'3ergy',SIP:'',NC:'502',R:''}]"
parsed_data = yaml.load( ": ".join(data.split(":")))[0]
# {'SIP': '', 'R': '', 'NC': '502', 'ID': 0, 'N': '3ergy'}

parsed_data.get("NC")
# '502'

答案 1 :(得分:1)

我毫不犹豫地分享我的解决方案,因为它非常难以利用这一特定输入数据的特征。但是,按照亚历山大的要求,这里是:

# source data is stocks="[{ID:0,N:'3ergy',SIP:'',NC:'502',R:'',...},
#                         {ID:1,N:'aaaaa',SIP:'',NC:'nnn',R:'nn',...}, .... ]"
Stocks = [] #parsed result
i = 1
while i>0:
   end = stocks.find('}',i)
   stock = stocks[i+1:end]
   parts = stock.split(',')
   Stock = {}
   for part in parts:
      key,value=part.split(':')
      Stock[key] = value.strip("'"))
   Stocks.append(Stock)
   i = stocks.find('{',end)