Python实现多字符串按对应行拼接及任意数量适配问询
实现多行字符串的对应行拼接(支持任意数量输入)
这个需求我之前也遇到过,处理多行文本对齐拼接的时候特别实用,给你一个通用的实现方案,支持任意数量的输入字符串,还能兼容各行数不一样的情况:
我们可以借助itertools里的zip_longest来对齐所有行(如果有的字符串行数少,会自动用空字符串补全),代码如下:
from itertools import zip_longest def merge_lines(*strings, separator=' '): # 把每个输入字符串按换行符拆分成行的列表 split_lines = [text.split('\n') for text in strings] # 对齐所有行,行数不足的用空字符串填充,然后把每一行的内容拼接 combined_rows = [separator.join(row_parts) for row_parts in zip_longest(*split_lines, fillvalue='')] # 把拼接好的所有行重新用换行符连接起来 return '\n'.join(combined_rows)
用法示例:
# 测试用的多行字符串 a = "Hello\nSome" b = "World\nText" c = "!\nExtra Line" # 调用函数合并 result = merge_lines(a, b, c) print(result)
输出结果会是:
Hello World ! Some Text Extra Line
额外说明:
- 如果你只想要和最短的输入字符串行数一致的结果(也就是忽略行数多的字符串里超出的行),把
zip_longest换成内置的zip就可以了,这样会自动截断到最短的行数。 - 函数里的
separator参数可以自定义,比如你想用逗号分隔,就传separator=', '就行。
内容的提问来源于stack exchange,提问作者sciencepiofficial
相关产品推荐
相关产品推荐

