Есть строка, похожая на невалидный JSON, в которой данные в основном представлены как ключ: значение, но иногда есть только ключ, или 2 ключа и одно значение.
input_str="""name1: value1; name2: value2; name3; prefix: name4: value4;"""
Хочу получить такой словарь:
output_dict={'name1': 'value1', 'name2': 'value2', 'name3':True, 'prefix name4': 'value4'}
Пытался распарсить её с помощью json.loads(предварительно расставив кавычки и т.п.), но не знаю как обрабатывать ситуации с name3 и name4.
UPDATE:
Сделал так:
import json
input_str="""name1: value1; name2: value2; name3; prefix: name4: value4;"""
if input_str[-1]==';':
input_str=input_str[:-1]
god_str='","'.join([{0: item+': True', 1: item}.get(item.count(':'),item.replace(":", " ", 1)) for item in json.dumps(input_str).split('; ')])
json_str='{%s}'%god_str.replace(': ','":"')
output_dict=json.loads(json_str)
print(output_dict)
Результат:
{'prefix name4': 'value4', 'name1': 'value1', 'name2': 'value2', 'name3': 'True'}
Всё хорошо, вот только True в кавычках.