Преобразовать строку (без кавычек) в JSON в Python

Я знаю что есть метод json.loads(string) но это будет работать, только если я отформатировал строку в JSON стиль. У меня есть строка в этой форме:

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

Есть ли какая-нибудь хитрость, чтобы сделать это?

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)

Возможно, решение, основанное на регулярных выражениях, будет работать более кратко, но, если честно, у меня нет ни времени, ни желания найти правильные выражения.

Другие вопросы по тегам