literal_eval 个具有单个元素的元组

literal_eval of tuple with a single element

我正在使用 ast.literal_eval(str) 计算包含 ('a', 'b', 'c') 等元组的字符串。但是,如果由于某种原因这个元组只包含一个元素,表达式将忽略括号并且 returns 只包含元素:

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

有什么简单的方法可以解决这个问题吗?有时,我可能有一个元组的元组,例如 (('a','b')) 并且因此不能只检查类型,这一事实加剧了这个问题。谢谢!

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

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