如何将元组深度连接到字符串中

Phi*_*bbs 8 python

我想将元组转换为以分号分隔的字符串.简单.

tup = (1,2)
';'.join(map(str,tup))
Run Code Online (Sandbox Code Playgroud)

输出:

'1;2'
Run Code Online (Sandbox Code Playgroud)

但是,如果其中一个元组条目本身就是一个元组,我会得到这样的结果:

'1;(2, 3)'
Run Code Online (Sandbox Code Playgroud)

我不想要那个逗号,我想要一个分号,而且我也想选择括号字符.

我要这个:

'1;{2;3}'
Run Code Online (Sandbox Code Playgroud)

有一种简单的方法来深加入嵌套到任意深度的元组的元组,同时指定分离器(;在本例中"")和(在上面的例子中"{"和"}")的parenthes?

请注意,我想要这个,这个问题被标记为重复:

'1,2,3'
Run Code Online (Sandbox Code Playgroud)

我还需要处理带逗号的字符串,所以我不能使用replace:

flatten((1,('2,3',4)))
'1;{2,3;4}'
Run Code Online (Sandbox Code Playgroud)

L3v*_*han 3

递归来拯救!

def jointuple(tpl, sep=";", lbr="{", rbr="}"):
    return sep.join(lbr + jointuple(x) + rbr if isinstance(x, tuple) else str(x) for x in tpl)
Run Code Online (Sandbox Code Playgroud)

用法:

>>> jointuple((1,('2,3',4)))
'1;{2,3;4}'
Run Code Online (Sandbox Code Playgroud)