我从Web服务中获取了一大块类似Json的数据。 数据与 JSON 具有相同的格式,但:
- 名称标识符不在引号中。
- 该值用单引号引起来。
示例为:
[{ID:0,N:'3ergy',SIP:'',NC:'502',R:'',....
这是一种众所周知的格式吗? 有没有一个Python工具可以将其转换为列表?
正如 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'
我犹豫要不要分享我的解决方案,因为它几乎是硬编码的,可以利用这个特定输入数据的特征。 但是同意亚历山大的要求,这里是:
# 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)