2017-02-10 4 views
0

Я пытаюсь обработать набор данных с данными JSON. Однако данные были записаны в файл без анализа. Это означает, что словарь python записывается в файл как строка вместо объекта JSON в виде строки.Python ast.literal_eval в строке словаря не работает (SyntaxError: недопустимый синтаксис)

Я нашел модуль (AST), который выполнит задание, чтобы преобразовать строку в словарь снова, используя функцию ast.literal_eval.

Однако, я получаю очень странные ошибки в некоторых случаях:

Error when parsing using ast.literal_eval

код считывает из текстового файла и примените следующие к каждой строке:

ast.literal_eval(line.rstrip()) 

Кажется, что некоторые из символов не в порядке с модулем AST.

Необходимо также вспомнить, что этого не происходит со всем набором данных, просто с некоторыми примерами.

Любые идеи?

Большое спасибо заранее.

ответ

0

Попробуйте изучить пакет json. Это более чистый и более стандартный способ преобразования строк в словарь

json.loads(inputStr) // Converts string -> dict 
json.dumps(inputJson) // Converts dict -> string 

Надеюсь, это поможет. Ура!

+0

Hi priyank. Спасибо за ваш ответ. Однако это не сработает. Как я сказал в сообщении, «данные были записаны в файле без разбора». Это означает, что кто-то написал в файл dict без того, чтобы разбираться с JSON раньше. Поэтому использование 'json.loads (inputStr)' не будет работать. Вот почему мне нужен аст. literal_eval. – Salias