【问题标题】:How do you convert a stringed dictionary to a Python dictionary? [duplicate]如何将字符串字典转换为 Python 字典? [复制]
【发布时间】:2010-09-17 18:21:14
【问题描述】:

我有以下字符串,它是一个 Python 字典字符串化:

some_string = '{123: False, 456: True, 789: False}'

如何从上述字符串中获取 Python 字典?

【问题讨论】:

    标签: python


    【解决方案1】:

    使用ast.literal_eval:

    安全地计算表达式节点或包含 Python 表达式的字符串。提供的字符串或节点只能由以下 Python 文字结构组成:字符串、数字、元组、列表、字典、布尔值和无。

    这可用于安全地评估来自不受信任来源的包含 Python 表达式的字符串,而无需自己解析值。

    例子:

    >>> some_string = '{123: False, 456: True, 789: False}'
    >>> import ast
    >>> ast.literal_eval(some_string)
    {456: True, 123: False, 789: False}
    

    【讨论】:

      【解决方案2】:

      嗯,你可以的

      d = eval(some_string)
      

      但如果字符串包含用户输入,这是一个坏主意,因为表达式中可能包含一些随机的恶意函数。见Safety of Python 'eval' For List Deserialization

      所以更安全的选择可能是:

      import ast
      d = ast.literal_eval(some_string)
      

      来自http://docs.python.org/library/ast.html#ast.literal_eval

      提供的字符串或节点只能包含以下内容 Python 文字结构:字符串、数字、元组、列表、字典、布尔值、 和无。

      【讨论】:

        【解决方案3】:

        唯一的安全方法是使用ast.literal_eval(它是安全的,因为与内置eval不同,“”“提供的字符串或节点可能仅包含以下内容Python 文字结构:字符串、数字、元组、列表、字典、布尔值和无。"""。

        【讨论】:

          猜你喜欢
          • 2012-11-20
          • 2013-02-14
          • 1970-01-01
          • 2020-10-23
          • 1970-01-01
          • 1970-01-01
          • 2020-12-29
          • 2018-05-19
          • 2013-03-13
          相关资源
          最近更新 更多