【问题标题】:ast.literal_eval(None) versus ast.literal_eval('None')ast.literal_eval(None) 与 ast.literal_eval('None')
【发布时间】:2017-03-14 18:50:08
【问题描述】:

从 ast 文档我可以得到以下信息:

安全地评估包含 Python 文字或容器显示的表达式节点或 Unicode 或 Latin-1 编码字符串。提供的字符串或节点只能由以下 Python 文字结构组成:字符串、数字、元组、列表、字典、布尔值和无。

由此看来, ast.literal_eval(None) 应该可以工作。

但是在 python 2.7 中,当我尝试执行 ast.literal_eval(None) 时出现 ValueError: malformed string。 如果我执行 ast.literal_eval('None'),则不会发生这种情况。

谁能解释为什么?我查看了 StackOverflow 上关于 ast.literaleval 和格式错误的字符串的其他问题,但没有一个能解决这个问题。

【问题讨论】:

    标签: python-2.7


    【解决方案1】:

    None 既不是字符串也不是expression node,因此没有理由相信它是ast.literal_eval() 的有效参数。

    【讨论】:

    • 感谢 Ignacio,这帮助我意识到我哪里出错了。我误读了文档。具体来说,我错过了说它必须是字符串或节点的部分。感谢您提供帮助并轻轻指出相当明显的答案。
    猜你喜欢
    • 2013-02-18
    • 2023-03-21
    • 2016-01-24
    • 2022-01-09
    • 1970-01-01
    • 2017-03-27
    • 2014-11-10
    相关资源
    最近更新 更多