我想在Python脚本中将以下字符串进行转换:
mystring='(5,650),(235,650),(465,650),(695,650)'
转换成元组列表
mytuple=[(5,650),(235,650),(465,650),(695,650)]
这样,print mytuple[0]
产生的结果是:
(5,650)
我想在Python脚本中将以下字符串进行转换:
mystring='(5,650),(235,650),(465,650),(695,650)'
mytuple=[(5,650),(235,650),(465,650),(695,650)]
这样,print mytuple[0]
产生的结果是:
(5,650)
我会使用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()
应用于结果即可。
那不是元组,那是列表。
如果你可以确保数据格式与你展示的完全一致,那么你可以尝试像这样将其转换为列表:
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)
使用 eval
mytuple = eval(mystring)
mytuble=eval("[%s]" % mystring)
这是最“简单”的解决方案(无需导入,适用于Python 2.5)。
然而,在“防御性”上下文中,ast.literate_eval
似乎更为合适。