带有单个元素的元组的literal_eval

时间:2016-08-25 16:39:14

标签: python abstract-syntax-tree

我正在使用ast.literal_eval(str)来评估包含('a', 'b', 'c')等元组的字符串。但是,如果由于某种原因,此元组仅包含单个元素,则表达式将忽略括号并仅返回元素:

>>> string = "('a')"
>>> x = ast.literal_eval(string)
>>> x
'a'

有解决这个问题的非黑客方法吗?有时,我可能有一个元组元组,如(('a','b')),因此不能只检查类型,这个问题更加严重。谢谢!

1 个答案:

答案 0 :(得分:2)

这是因为('a')不是一个元组,而是一个被视为a的字符串。仅包含一个对象的元组定义为('a',)(请注意,

>>> type('a')
<type 'str'>    <-- String
>>> type(('a'))
<type 'str'>    <-- String
>>> type(('a',))
<type 'tuple'>  <-- Tuple