【问题标题】:String with backslashes to dictionary带有反斜杠的字符串到字典
【发布时间】:2022-01-23 02:08:41
【问题描述】:

我有以下字符串:

txt = "{\'legs_a\': 1,\'legs_b\': 0,\'score_a\': 304,\'score_b\': 334,\'turn\': B,\'i\': 2,\'z\': 19}"

当我打印它时,我会在控制台中看到以下输出

{'legs_a': 1,'legs_b': 0,'score_a': 304,'score_b': 334,'turn': B,'i': 2,'z': 19}

我想用ast.literal_eval()制作一个字符串字典

import ast
d = ast.literal_eval(txt)

这会产生以下错误:

{ValueError} 错误的节点或字符串:<_ast.name object at>

请解释发生了什么问题?如何从字符串中制作字典?谢谢

【问题讨论】:

  • 您是否在某处定义了B
  • 如果将 B 替换为 8 ... 它可以工作 ...

标签: python string dictionary


【解决方案1】:

B 是未定义的变量或未加引号的字符串。

尝试:

txt = "{\'legs_a\': 1,\'legs_b\': 0,\'score_a\': 304,\'score_b\': 334,\'turn\': \'B\',\'i\': 2,\'z\': 19}"
d = ast.literal_eval(txt)
print(d)

输出:

{'legs_a': 1, 'legs_b': 0, 'score_a': 304, 'score_b': 334, 'turn': 'B', 'i': 2, 'z': 19}

请注意,如果您想使用 json.loads() 函数反序列化 JSON 字符串,则需要将单引号替换为双引号。

data = json.loads(txt.replace("'", '"'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    相关资源
    最近更新 更多