簡體   English   中英

元組和列表轉換為python中的格式化字符串

[英]Tuple and List to formatted string in python

在Python3.4中,我有一個元組

t = ('A', 'B', 'C')

和一個清單

l = ['P', 'Q', 'R']

並且我需要將元組轉換為格式為"(#A;#B;#C)"的字符串,並將列表轉換為格式為"(@P; @Q; @R)"的字符串。 顯而易見的方法是使用for循環和字符串操作進行遍歷。

有沒有一種方法可以不運行循環?

謝謝!

如果您確實堅持使用格式而不使用for循環,則可以嘗試以下操作:

l_result = '(@' + '; @'.join(l) + ')'
t_result = '(#' + ';#'.join(t) + ')'

為什么不使用循環? 這可以使用理解非常簡單地完成:

>>> t = ('A', 'B', 'C')
>>> '({})'.format(';'.join('#{}'.format(s) for s in t))
'(#A;#B;#C)'
>>> 
>>> l = ['P', 'Q', 'R']
>>> '({})'.format('; '.join('@{}'.format(s) for s in l))
'(@P; @Q; @R)'
>>> 

如果不是使用循環,則另一種方法可以是將它們轉換為字符串並使用字符串的替換方法,如下所示

str(t).replace("', '", ";#").replace("('", "(#").replace("')", ")")


str(l).replace("', '", '; @').replace("['", "(@").replace("']", ")")

如果只有三個元素,則也可以單獨替換它們。

沒有顯式循環,甚至沒有列表理解:

>>> t = ('A', 'B', 'C')
>>> l = ['P', 'Q', 'R']
>>> '(' + (len(t) * '#%s;')[:-1] % t + ')'
'(#A;#B;#C)'
>>> '(' + (len(l) * '@%s; ')[:-2] % tuple(l) + ')'
'(@P; @Q; @R)'

我不知道為什么您不想使用for循環,但是您可以使用列表理解來實現,您將使用for循環,但是方法更漂亮

l = ['P', 'Q', 'R']

new = '('+'; '.join(['@'+i for i in l])+')'

print(new)
(@P; @Q; @R)

您可以對元組執行相同的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM