Python 具有单个元素的元组的文字值

Python 具有单个元素的元组的文字值,python,abstract-syntax-tree,Python,Abstract Syntax Tree,我使用ast.literal\u eval(str)来计算包含元组的字符串,例如('a','b','c')。但是,如果出于某种原因,此元组仅包含单个元素,则表达式将忽略括号并仅返回元素: >>> string = "('a')" >>> x = ast.literal_eval(string) >>> x 'a' 有没有一个非黑客的方法来解决这个问题?有时,我可能会有一个元组的元组,比如(('a','b'),因此不能只检查类型,这一事实加剧

我使用
ast.literal\u eval(str)
来计算包含元组的字符串,例如
('a','b','c')
。但是,如果出于某种原因,此元组仅包含单个元素,则表达式将忽略括号并仅返回元素:

>>> string = "('a')"
>>> x = ast.literal_eval(string)
>>> x
'a'
有没有一个非黑客的方法来解决这个问题?有时,我可能会有一个元组的元组,比如
(('a','b')
,因此不能只检查类型,这一事实加剧了这个问题。谢谢

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

>>类型('a')
>>类型(('a'))
>>类型(('a',))

(x)
不是1元组。对。但我的目标是完全避免那个小小的逗号;有没有办法做到这一点?如果你把它去掉,它就不是一个元组了。这是Python的语法:)我很害怕。不过,谢谢你!
>>> type('a')
<type 'str'>    <-- String
>>> type(('a'))
<type 'str'>    <-- String
>>> type(('a',))
<type 'tuple'>  <-- Tuple