在Python中将字符串(不带引号)转换为JSON

时间:2017-10-27 13:31:26

标签: python json

我知道有一个方法json.loads(string)但只有在我将String格式化为JSON样式时它才会起作用。我有的字符串是这种形式:

{
data1: {
    x1: 'xyz'
},
data2 {
    y1: 'datadata'
 },
identify: {
    title: {
       text: 'Some important things'
     }
    }
}

有没有诀窍呢?

1 个答案:

答案 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)

基于正则表达式的解决方案可能会更加简洁,但说实话,我没有时间或渴望找到正确的表达方式。