如何将字符串转换为元组
我喜欢在 Python 脚本中将以下字符串:转换
mystring='(5,650),(235,650),(465,650),(695,650)'
为元组列表
mytuple=[(5,650),(235,650),(465,650),(695,650)]
,这样 print mytuple[0]
产生:
(5,650)
I like to convert in a Python script the following string:
mystring='(5,650),(235,650),(465,650),(695,650)'
to a list of tuples
mytuple=[(5,650),(235,650),(465,650),(695,650)]
such thatprint mytuple[0]
yields:
(5,650)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我会使用
ast.literal_eval
:如上所示,这返回一个元组的元组。如果您想要元组列表,只需将
list()
应用于结果即可。I'd use
ast.literal_eval
:As seen above, this returns a tuple of tuples. If you want a list of tuples, simply apply
list()
to the result.那不是一个元组,这是一个列表。
如果您可以依赖与您所显示的格式完全相同的格式,那么您可能可以通过执行类似的操作将其转换为列表:
这可能可以使用一些更好的列表遍历机制来改进。不过,这应该很清楚。
如果你真的想要一个元组的元组,你可以转换最终的列表:
That's not a tuple, that's a list.
If you can depend on the format being exactly as you've shown, you can probably get away with doing something like this to convert it to a list:
This can probably be improved using some better list-walking mechanism. This should be pretty clear, though.
If you really really want a tuple of tuples, you can convert the final list:
请使用 eval
如果你想要一个用括号括起来 mystring 的列表,
这是“最简单”的解决方案(无需导入任何内容,使用 Python 2.5)
然而,
ast.literate_eval
似乎更适合防御性环境。Use
eval
If you want a list enclose mystring with brackes
That's the 'simplest' solution (nothing to import, work with Python 2.5)
However
ast.literate_eval
seems more appropriate in a defensive context.