Python: 字符串到字典

Python: String to Dictionary

我通读了几篇关于将字符串转换为字典的 Whosebug 帖子。我正在尝试使用 ast.literal_eval 进行示例,但无法弄清楚我哪里出错了。我相信我正在以正确的格式放置字符串...

字符串:"{'platform_name': 'TSC2_commander', 'tracks': '52', 'time': '150'}"

代码:newdictionary = ast.literal_eval('"' + str(word) +'"')

但是当我尝试打印 print(newdictionary.get('Platform_Name')) 时,我得到“Str object has no attribute 'get'”。有人可以教我我做错了什么吗?

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

请查看示例输出:

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

输出:

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

问题在于 ast 如何解释您提供的字符串。 如果字典的字符串本身不包含引号,它将被解释为你想要的。

    >>> import ast
    >>> dictionary = ast.literal_eval("{'a': 1, 'b': 2}")
    >>> print(type(dictionary))
    <class 'dict'>
    >>> dictionary.get('a')
    1

但是如果你给ast的字符串本身有引号,它会被解释为一个字符串。


    >>> newdictionary = ast.literal_eval('"' + str("{'a':1, 'b':2}") + '"')
    >>> print(type(newdictionary))
    <class 'str'>
    >>> print(newdictionary)
    {'a':1, 'b':2}
    >>>