Python: 字符串到字典

问题描述 投票:0回答:2

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

python dictionary literals
2个回答
2
投票
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
投票

请看一下输出示例

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

输出:

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

1
投票

问题在于 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}
    >>>
© www.soinside.com 2019 - 2024. All rights reserved.