gpt4 book ai didi

python - 在 Python 中交错两个多行字符串

转载 作者:行者123 更新时间:2023-11-28 21:34:34 26 4
gpt4 key购买 nike

我想做 this post 中所做的事情,Python 中除外。考虑两个字符串:

s1='AAA1
AAA2
AAA3'
s2='BBB1
BBB2
BBB3'

我想让combine(s1,s2)返回:

s3='AAA1BBB1
AAA2BBB2
AAA3BBB3'

您可能会认为这些字符串实际上非常长,我希望这个过程具有高性能。如果您能帮助我了解如何执行此操作,我将不胜感激。

最佳答案

在 Python 中,多行字符串用 ''' 表示。

>>> s1 = '''AAA1
...:AAA2
...:AAA3'''
>>>
>>> s2 = '''BBB1
...:BBB2
...:BBB3'''

您可以使用 str.splitlines 拆分它们,并使用 zip 交错它们。

>>> strings = [s1, s2]
>>> pairs = zip(*(s.splitlines() for s in strings))
>>> result = '\n'.join(''.join(pair) for pair in pairs)
>>>
>>> print(result)
AAA1BBB1
AAA2BBB2
AAA3BBB3

使用 *args 语法接受任意数量的多行字符串的通用函数可以编写如下。

>>> def combine(*strings):
...: lines = zip(*(s.splitlines() for s in strings))
...: return '\n'.join(''.join(line) for line in lines)
>>>
>>> str1 = '''A
...:D
...:H'''
>>> str2 = '''B
...:E
...:I'''
>>> str3 = '''C
...:F
...:J'''
>>>
>>> print(combine(str1, str2, str3))
ABC
DEF
HIJ

请注意,zip 将其生成的迭代截断为其最短参数的长度,即结果的行数与传递给 combine 的最短多行字符串一样多。

如果您期望字符串具有不同的行数并且需要填充值,您可以使用 zip_longest来自 itertools 模块。

关于python - 在 Python 中交错两个多行字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53179681/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com