嵌套字符串到元组python

时间:2012-10-13 21:03:15

标签: python

我的字符串看起来像:

"('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

2 个答案:

答案 0 :(得分:7)

您可以使用ast.literal_eval执行此操作 - 例如:

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

该功能的documentation说:

  

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

     

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

答案 1 :(得分:2)

使用ast.literal_eval

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