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