我正在使用 ast.literal_eval(str)
来计算包含元组的字符串,例如 ('a', 'b', 'c')
。但是,如果由于某种原因该元组仅包含单个元素,则表达式将忽略括号并仅返回该元素:
>>> 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
关于python - 具有单个元素的元组的literal_eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39150590/