[英]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
說明:使用split
和join
我們可以在換行符處(或我們選擇的任何字符)進行拆分,以獲取單獨的行(作為列表),反之亦然。
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 comprehension
和join
來連接字符串:
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.