我知道有一个方法json.loads(string)
但只有在我将String格式化为JSON
样式时它才会起作用。我有的字符串是这种形式:
{
data1: {
x1: 'xyz'
},
data2 {
y1: 'datadata'
},
identify: {
title: {
text: 'Some important things'
}
}
}
有没有诀窍呢?
答案 0 :(得分:1)
我不能强调我认为这个解决方案是多么笨重,但它确实起作用了。首先,我假设OP发了一个拼写错误并且意味着" data2 **:**"或者这个解决方案需要更加复杂。
首先,创建一个包含急需的引号的函数。
def fix_element(elem):
if elem[-1] == ':':
return '"{}":'.format(elem[:-1])
else:
return elem
其次,仅使用双引号解析对象的文本:
text = """{
data1: {
x1: 'xyz'
},
data2: {
y1: 'datadata'
},
identify: {
title: {
text: 'Some important things'
}
}
}""".replace("\'", '"')enter code here
然后纠正文本的所有元素:
fixed_elem = [fix_element(elem) for elem in text.split()]
fixed_text = ''.join(fixed_elem)
基于正则表达式的解决方案可能会更加简洁,但说实话,我没有时间或渴望找到正确的表达方式。