Python将元组转换为字符串

153

我有一个字符元组,形式如下:

('a', 'b', 'c', 'd', 'g', 'x', 'r', 'e')

我该如何将它转换为字符串,使其变成这样:

'abcdgxre'

2
尝试一下这个:reduce(add, ('a', 'b', 'c', 'd')) - Grijesh Chauhan
在这个例子中,@GrijeshChauhan中的add是什么? - Steve
@Steve 你需要从 operator 模块导入 add 函数。顺便说一下,"".join 更适合这里,但如果你想添加不同类型的对象,可以使用 add。请查看这个工作示例 - Grijesh Chauhan
@intel3,我们如何从字典中删除元组??({'entities': [[44, 58, 'VESSEL'], [123, 139, 'VESSEL'], [146, 163, 'COMP'], [285, 292, 'ADDR'], [438, 449, 'ADDR'], [452, 459, 'ADDR']]},) - Pravin
@Pravin 那些不是元组。 - Tommaso Thea Cioni
5个回答

230
使用 str.join:
>>> tup = ('a', 'b', 'c', 'd', 'g', 'x', 'r', 'e')
>>> ''.join(tup)
'abcdgxre'
>>>
>>> help(str.join)
Help on method_descriptor:

join(...)
    S.join(iterable) -> str

    Return a string which is the concatenation of the strings in the
    iterable.  The separator between elements is S.

>>>

34
如果元组包含数字,则无法正常工作。尝试使用tup = (3, None, None, None, None, 1406836313736)。 - Raj
79
针对数字,您可以尝试这样做:''.join(map(str, tup)) - Mo Beigi
1
对于数字和None,请尝试''.join(map(lambda x: str(x or ''), (None, 1, 2, 'apple'))). - xjlin0

33

这里有一个使用join的简单方法。

''.join(('a', 'b', 'c', 'd', 'g', 'x', 'r', 'e'))

这是对我最有用的答案 (+1),但这种方法不够优雅。在 MATLAB 中,只需要使用 num2str - Nike

21

这个有效:

''.join(('a', 'b', 'c', 'd', 'g', 'x', 'r', 'e'))

它将产生:

'abcdgxre'

您还可以使用逗号等分隔符来生成:

'a,b,c,d,g,x,r,e'

通过使用:

','.join(('a', 'b', 'c', 'd', 'g', 'x', 'r', 'e'))

当然有效。在你发帖之前,它已经被标记为被接受的答案五年了。 - undefined

0

如果只是像下面这样对元组使用str()

t = ('a', 'b', 'c', 'd', 'g', 'x', 'r', 'e')

print(t, type(t))

s = str(t) # Here

print(s, type(s))

只有将类型从tuple更改为str,而不改变值,如下所示:

('a', 'b', 'c', 'd', 'g', 'x', 'r', 'e') <class 'tuple'>
('a', 'b', 'c', 'd', 'g', 'x', 'r', 'e') <class 'str'>

-1
最简单的方法是像这样使用join:
>>> myTuple = ['h','e','l','l','o']
>>> ''.join(myTuple)
'hello'

这个代码能够运行是因为你的分隔符实际上是空的,甚至没有一个空格:''。


32
你的 "myTuple" 实际上是一个列表。 - bariod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接