gpt4 book ai didi

Python将字符串对象转换为字典

转载 作者:行者123 更新时间:2023-11-28 20:29:06 25 4
gpt4 key购买 nike

我一直致力于构建一个可以返回字典的复杂数据结构。目前该类返回表单的字符串对象

{
cset : x,
b1 : y,
b2 : z,
dep : {
cset : x1,
b1 : y1,
b2 : z1,
dep : {
cset : x2,
b1 : y2,
b2 : z2,
dep : <same as above.it recurses few more levels>
...
}
}
}

我想将整个字符串对象转换成字典。我在其中一篇文章中读到使用 pickle 模块,但我不想将它序列化到某个文件中并使用它。

引用:http://bytes.com/topic/python/answers/36059-convert-dictionary-string-vice-versa

如果可能的话,我正在寻找其他更简洁的方法。

知道任何这样的方法会很棒。

最佳答案

不要使用eval。如果您确定字符串将始终包含有效的 Python dict,请使用 ast.literal_eval。这与 eval 非常相似,但它仅评估表达式是否为有效的 dictlist 等,如果是则抛出异常不是。这比尝试在运行时评估可能包含任意代码的字符串更安全。

来自docs :

Safely evaluate an expression node or a string containing a Python expression. The string or node provided may only consist of the following Python literal structures: strings, numbers, tuples, lists, dicts, booleans, and None.

This can be used for safely evaluating strings containing Python expressions from untrusted sources without the need to parse the values oneself.

代码示例:

>>> import ast
>>> ast.literal_eval("1+1")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/ast.py", line 68, in literal_eval
return _convert(node_or_string)
File "/usr/lib/python2.6/ast.py", line 67, in _convert
raise ValueError('malformed string')
ValueError: malformed string
>>> ast.literal_eval("\"1+1\"")
'1+1'
>>> ast.literal_eval("{'a': 2, 'b': 3, 3:'xyz'}")
{'a': 2, 3: 'xyz', 'b': 3}

关于Python将字符串对象转换为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3249345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com