如果从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')。
编辑:如果我的字符串包含带逗号或括号的字符串,则此解决方案将失败。我想要更强大的东西。
答案 0 :(得分:11)
答案 1 :(得分:1)
如果您信任您的输入,则可以使用eval
>>> inp = "(1, 2, 3)"
>>> eval(inp)
(1, 2, 3)
如果您不信任它,请按照“GWW”
的建议使用ast.literal_eval
答案 2 :(得分:1)
您可以删除(
和)
,然后根据,
进行拆分。最后通过tuple
将单个项目转换为整数,将列表转换为int
的元组。
data = '(1,2,3)'
print tuple(int(item) for item in data.strip("()").split(","))
# (1, 2, 3)