-4

我从 sql 查询中检索数据,然后

我有一个元组列表,例如:

[(34.2424,), (-64.2344,) (76.3534,), (45.2344,)]

我想要一个像 (34.2424, -64.2344, 76.3534, 45.2344,) 这样的字符串

是否存在可以做到这一点的功能?

注意','每个元组末尾的...我很难摆脱它

4

5 回答 5

2

如果您使用的是 Python 2.x,那么您可以使用:

>>> a = [(34.2424, -64.2344, 76.3534, 45.2344)]
>>> print ' '.join(map(str, a[0]))
'34.2424 -64.2344 76.3534 45.2344'

在 Python 3.x 或带有 的 Python 2.x 中from __future__ import print_function,您可以使用:

>>> print(*a[0])
34.2424 -64.2344 76.3534 45.2344

您似乎已经更新了输入数据的格式,所以:

每个元组的第一个元素...

>>> a = [(34.2424,), (-64.2344,), (76.3534,), (45.2344,)]
>>> print ' '.join(str(el[0]) for el in a)
34.2424 -64.2344 76.3534 45.2344

每个元组中有多个元素...

>>> from itertools import chain
>>> print(*chain.from_iterable(a))
34.2424 -64.2344 76.3534 45.2344

但是,您似乎只想要一个元组......

>>> tuple(chain.from_iterable(a))
(34.2424, -64.2344, 76.3534, 45.2344)

如果您愿意,您可以使用str它来使其成为 str ...

于 2013-07-21T21:06:21.810 回答
1

str.join() 仅适用于字符串,因此您必须先将它们转换为字符串。我可以把它写出来,但我刚刚在 Python Cookbook(我最喜欢的新书)中读到了一些关于这个的内容,所以我将链接到那个。Beazley 和 Jones 写道,要打印这样的元组,而不是将每个元组转换为字符串,您可以简单地执行以下操作:

tup = (34.2424, -64.2344, 76.3534, 45.2344)
print(*tup)

由于您的元组嵌套在列表中,您可以遍历列表并因此打印,或者您可以在使用它之前展平列表(并且有很多关于 SO 的答案,Python Cookbook 中有一个很好的答案,关于展平嵌套序列)。

编辑:我注意到标题更改为将元组列表展平为元组的请求,这是一个展平嵌套序列请求。

我将链接到我上面提到的名为“扁平化嵌套序列”的 Python Cookbook 食谱,并再次声明这里有很多关于此的答案:“扁平化嵌套序列

于 2013-07-21T21:10:22.047 回答
1

抱歉,我误读了您的问题,但没有投反对票。

>>> data = [(34.2424,), (-64.2344,), (76.3534,), (45.2344,)]
>>> data_str = '(' + ', '.join(map(lambda x: str(x[0]), a)) + ')'
>>> print data_str
(34.2424, -64.2344, 76.3534, 45.2344)
>>> 

或者只是展平列表并用于str将结果元组作为字符串获取。

>>> data_str = str(sum(data, ()))
于 2013-07-21T21:14:56.210 回答
0
" ".join(tuple)

假设您想要空格分隔符,它将完成这项工作。

于 2013-07-21T20:56:32.680 回答
-2

字符串的join功能会做到这一点。

print " ".join(arrayOfValuesYouWantToJoinTogether)
于 2013-07-21T20:56:45.550 回答