ошибки в json python

Рейтинг: 0Ответов: 2Опубликовано: 28.02.2023

Добрый вечер

я парсю сотни json файлов, но много попадаются кривые json,

{"name":"Максимальная дальность","unit":cH,"value":"invalid_key"}

подскажите пожалуйста как добавить кавычки, что было так?

{"name":"Максимальная дальность","unit":"cH","value":"invalid_key"}

Ответы

▲ 0

Работаешь сначала как со строкой, т.е. парсишь на куски - от запятой до двоеточия.

Т.е. делишь файл на:

  • от "{" до ":"
  • от ":" до ","
  • от "," до ":"
  • от ":" до "}"

В каждом куске проверяешь на наличие кавычек. Есть есть одинарные кавычки - сразу замена на двойные. Если число кавычек не равно 2 - значит какая-то фигня - и вот тут нужно оценить куда добавить кавычку.

Напишешь такую функцию - и всё будет в порядке)

▲ 0

Здесь придется использовать регулярные выражения (не уверен) или писать свой парсер. Я написал парсер на основе коментария от @Kraftsov. Вот код (переменная js это ваш json):

out = [i.split(':') for i in js[1:-1].replace('"', '').split(',')]

EDIT: Нашел решение здесь. Регулярные выражения можно использовать таким видом:

json_str = re.sub(r':', r':"', json_str)

А json_str - это ваш json.