簡體   English   中英

在python中合並多行字符串

[英]Merge multiline strings in python

試圖弄清楚如何合並包含新行的多個字符串。

所以:

"""line 1 
line 2 
line 3 
line 4"""

+

"""addition 1 
addition 2 
addition 3 
addition 4"""

"""line 1 addition 1
line 2 addition 2
line 3 addition 3
line 4 addition 4"""

但是,條目多於兩個。

任何幫助,將不勝感激。

您可以在新行上拆分,然后在zip / concat上拆分:

s1 = """line 1 
line 2 
line 3 
line 4"""

s2 = """addition 1 
addition 2 
addition 3 
addition 4"""

print('\n'.join(map(lambda l: l[0] + l[1],zip(s1.split('\n'), s2.split('\n')))))

你可以做:

>>> L = '\n'.join(f'line {i}' for i in range(1, 5))
>>> A = '\n'.join(f'addition {i}' for i in range(1, 5))
>>> LA = '\n'.join(map(' '.join, zip(*map(str.split, (L, A), ('\n', '\n')))))
>>> 
>>> print(LA)
line 1 addition 1
line 2 addition 2
line 3 addition 3
line 4 addition 4

說明:使用splitjoin我們可以在換行符處(或我們選擇的任何字符)進行拆分,以獲取單獨的行(作為列表),反之亦然。

map是一種將相同功能應用於多個參數的方法。 內部map可能看起來有些瑣碎,因為它實際上可以重寫為L.split('\\n'), A.split('\\n') 但是,由於OP要求的條目多於兩個 map因此實際上是一個不錯的選擇

我假設每個人都知道的zip ,在這里它返回('line 1', 'addition 1'), ('line 2', 'addition 2'), ...

接下來,我們使用map' '.join應用於每個對,從而給出'line 1 addition 1', 'line 2 addition 2', ...

仍然需要用換行符重新加入他們。

您可以使用list comprehensionjoin來連接字符串:

s1 = """line 1
line 2
line 3
line 4"""

s2 = """addition 1
addition 2 
addition 3 
addition 4"""

result = "\n".join([" ".join(elem) for elem in zip(s1.split("\n"), s2.split("\n"))])
print(result)

輸出:

line 1 addition 1
line 2 addition 2 
line 3 addition 3 
line 4 addition 4

暫無
暫無

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

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