Преобразовать строку (без кавычек) в 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)
Возможно, решение, основанное на регулярных выражениях, будет работать более кратко, но, если честно, у меня нет ни времени, ни желания найти правильные выражения.