繁体   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