我说不明的原因是因为它是从IOS 12扩展发送的,我没有办法创建这种格式,但仅假设没有办法在那做任何格式化。
在Python中,我收到的是以下格式的字符串:
{
"body": '{\n carrierName = "AT&T";\n dateRecieved = "2018-08-07 20:29:56 +0000";\n \n}'
}
我想知道这种格式{foo =“ bar”; top =“ long”;}被称为?它是从iOS本地库返回的内容,因此必须是某种东西。并且有任何内置的方式将其解析为json或dict。我可以肯定地编写自己的解析器,但是我正在寻找内置的东西或某些通用库中存在的东西。
答案 0 :(得分:3)
字典中的内容类似于JavaScript。幸运的是,Python可以通过py_mini_racer
来解释JS。安装模块(例如,使用pip
),创建解释器的实例:
from py_mini_racer import py_mini_racer
js = py_mini_racer.MiniRacer()
d = {
"body": '{\n carrierName = "AT&T";\n dateRecieved = "2018-08-07 20:29:56 +0000";\n \n}'
}
根据需要评估表达式和变量:
js.eval(d['body'])
js.eval("carrierName")
#'AT&T'
js.eval("dateRecieved")
#'2018-08-07 20:29:56 +0000'
答案 1 :(得分:2)
在没有py_mini_racer的情况下进行解析。我无法在我的
上安装py_mini_racer
python 3.7
d = {
"body": '{\n carrierName = "AT&T";\n dateRecieved = "2018-08-07 20:29:56 +0000";\n \n}'
}
def parseD(d):
import re
def makeD(l): # make dict from 2 element list
return dict([[s.strip().replace('"','') for s in l]])
finalD = {}
for di in [makeD(x) for x in [s.split('=') for s in re.findall(r'(\w+\s+=.*);', list(d.values())[0])]]:
finalD.update(di)
return finalD
parseD(d)
{'carrierName': 'AT&T', 'dateRecieved': '2018-08-07 20:29:56 +0000'}
d = parseD(d)
d['carrierName']
'AT&T'
d['dateRecieved']
'2018-08-07 20:29:56 +0000'