[英]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.