Python: строка в словарь - PullRequest
       44

Python: строка в словарь

0 голосов
/ 17 июня 2020

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

Строка: "{'platform_name': 'TSC2_commander', 'tracks': '52', 'time': '150'}"

Код: newdictionary = ast.literal_eval('"' + str(word) +'"')

Но когда я пытаюсь напечатать print(newdictionary.get('Platform_Name')) Я получаю: «У объекта Str нет атрибута 'get'. Может ли кто-нибудь научить меня, что я делаю неправильно?

Ответы [ 3 ]

2 голосов
/ 17 июня 2020
from ast import literal_eval
a_string = "{'platform_name': 'TSC2_commander', 'tracks': '52', 'time': '150'}"

a_dict = literal_eval(a_string)
print(a_dict['platform_name'])

Вывод:

TSC2_commander
1 голос
/ 17 июня 2020

Проблема в том, как ast интерпретирует переданную вами строку. Если строка словаря сама по себе не содержит кавычек, она будет интерпретироваться как то, что вы намереваетесь. .


    >>> newdictionary = ast.literal_eval('"' + str("{'a':1, 'b':2}") + '"')
    >>> print(type(newdictionary))
    <class 'str'>
    >>> print(newdictionary)
    {'a':1, 'b':2}
    >>>
1 голос
/ 17 июня 2020

Взгляните на пример вывода:

import ast
my_string = "{'key':'val','key1':'value'}"
my_dict = ast.literal_eval(my_string)

Вывод:

{'key': 'val', 'key1': 'value'}
...