如何按奇数长度分割字符串

时间:2019-07-17 01:49:22

标签: python-3.x split

让我们说一个字符串=“ AABBAAAAABBBBAAAAAABBBBAA” 我想返回按字符串的奇数长度分割的字符串(即,当A = 5或A = 3时),

我想要返回的是1)AABBAAAAA 2)BBBBAAA 3)BBBBAA,

我该怎么做?

我尝试使用正则表达式[A] + [B] +处理稍有不同的情况

2 个答案:

答案 0 :(得分:0)

一个选项可能是使用re.finditer以以下模式进行正则表达式迭代:

.*?(?:AAA(?:AA)?|$)

此模式将不会贪婪地消耗,直到达到3 A,5 A或字符串末尾为止。然后,我们可以在进行迭代时打印出每个完全匹配项。

input = 'AABBAAAAABBBBAAABBBBAA'
pattern = '.*?(?:AAA(?:AA)?|$)'
for match in re.finditer(pattern, input):
    print match.group()

此打印:

AABBAAAAA
BBBBAAA
BBBBAA

答案 1 :(得分:0)

您可以使用itertools.groupby

s = 'BBAAAAABBBBAAABBBBAA'

from itertools import groupby

out = ['']
for v, g in groupby(s):
    l = [*g]
    out[-1] += ''.join(l)
    if v == 'A' and len(l) in (3, 5):
        out.append('')

print(out)

打印:

['BBAAAAA', 'BBBBAAA', 'BBBBAA']