我读了几个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'。谁能教教我,我做错了什么?
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}
>>>