给定从 csv 中读取的字符串 '(1,2,3)',我如何将其转换为元组 (1,2,3)?我尝试了 tuple('(1,2,3)') 但得到了 ('(', '1', ',', '2', ',', '3' , ')') 而不是 (1,2,3)。我认为这可能是合理的,因为 int('1') 返回 1。
现在是代码
tuple(map(int, re.split('[(),]', '(1,2,3)')[1:-1]))
通过返回 ['', '1', '2', '3', ''],修剪边缘,将条目转换为整数,最后将结果列表转换为一个元组。我想知道是否有更简单的方法来执行此操作,也许类似于 int('1')。
编辑:如果我有一个包含带逗号或圆括号的字符串的字符串元组,此解决方案将失败。我想要更坚固的东西。
请您参考如下方法:
使用ast.literal_eval , 它比 eval
import ast
ast.literal_eval('(1,2,3)')
结果:
(1, 2, 3)
这也适用于列表、字典、数字等。
