如何将字符串转换为元组

时间:2011-09-26 12:27:07

标签: python configparser

我想在Python脚本中转换以下字符串:

mystring='(5,650),(235,650),(465,650),(695,650)'

到元组列表

mytuple=[(5,650),(235,650),(465,650),(695,650)]

这样的 print mytuple[0]收益:

(5,650)

3 个答案:

答案 0 :(得分:13)

我使用ast.literal_eval

In [7]: ast.literal_eval('(5,650),(235,650),(465,650),(695,650)')
Out[7]: ((5, 650), (235, 650), (465, 650), (695, 650))

如上所示,这将返回一个元组元组。如果您想要一个元组列表,只需将list()应用于结果。

答案 1 :(得分:1)

这不是一个元组,这是一个列表。

如果您可以完全依赖于您所显示的格式,那么您可以通过执行此类操作将其转换为列表:

mystring2 = mystring.translate(None, "()")
numbers = mystring2.split(",")
out = []
for i in xrange(len(numbers) / 2)
  out.append((int(numbers[2 * i), int(2 * i + 1])))

这可以使用一些更好的列表行走机制来改进。不过,这应该很清楚。

如果你真的想要一个元组元组,你可以转换最终列表:

out2 = tuple(out)

答案 2 :(得分:1)

使用eval

mytuple = eval(mystring)

如果你想要一个列表用括号括起mystring

mytuble=eval("[%s]" % mystring)

这是'最简单'的解决方案(无需导入,使用Python 2.5) 但是ast.literate_eval似乎更适合防御上下文。