3

我的字符串看起来像:

"('f', ('d', ('a', 'b')), 'g')"

我想将其转换为元组。怎么能这样做...我将在绘制树状图时使用它

编辑:附加说明:我的代码和输出(打印):

print type(myString)                     # <type 'str'>
print myString                           #('f',('d',('a','b')),'g')
myString = ast.literal_eval(myString)
print type(myString)                     #<type 'tuple'>
print myString                           #('f', ('d', ('a', 'b')), 'g')

for tuple in myString:                   #f
    print tuple                          #('d', ('a', 'b'))
                                         #g
4

2 回答 2

7

您可以使用ast.literal_eval- 例如:

>>> import ast
>>> s = "('f', ('d', ('a', 'b')), 'g')"
>>> ast.literal_eval(s)
('f', ('d', ('a', 'b')), 'g')

该功能的文档说:

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

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

于 2012-10-13T21:05:55.937 回答
2

使用ast.literal_eval.

这不会让一些恶意脚本从提供的字符串中运行eval

于 2012-10-13T21:06:05.460 回答