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
我正在使用 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