如何将字符串转换为元组

发布于 2024-12-06 16:07:11 字数 274 浏览 0 评论 0原文

我喜欢在 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 that
print mytuple[0] yields:

(5,650)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

灼疼热情 2024-12-13 16:07:11

我会使用 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() 应用于结果即可。

I'd use 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))

As seen above, this returns a tuple of tuples. If you want a list of tuples, simply apply list() to the result.

神妖 2024-12-13 16:07:11

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

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

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)

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:

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])))

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:

out2 = tuple(out)
尽揽少女心 2024-12-13 16:07:11

请使用 eval

mytuple = eval(mystring)

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

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

这是“最简单”的解决方案(无需导入任何内容,使用 Python 2.5)
然而,ast.literate_eval 似乎更适合防御性环境。

Use eval

mytuple = eval(mystring)

If you want a list enclose mystring with brackes

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

That's the 'simplest' solution (nothing to import, work with Python 2.5)
However ast.literate_eval seems more appropriate in a defensive context.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文