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}
>>>
我通读了几篇关于将字符串转换为字典的 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}
>>>