Python/Panda 字符串分割 - 保留分隔符 (分割符)

3
我想把一个字符串拆分成已知子串(子字符)的块。我相信只要在输出中保留分隔符,就可以实现这一点。
例如:
re.split('LBT', 'HLHLBTS')
['HLH', 'S'] #output
['HLH', 'LBT', 'S'] #Needed output

我希望你能提供最终的输出结果:

['H', 'HL', 'HLH', 'HLHLBT','HLHLBTS'] # Can be achieved if I have above

我已经尝试过这种方法,它可以得到最终结果,但在这种情况下我只是暴力破解了它。
seq = re.split('', 'HLHLBTS')
seqout = []
sout = []
s = ''
count = 0
cond = 'run'
for i in range(len(seq)):
    if count == 2:
        cond = 'run'
    if cond == 'skip':
        count = count + 1
        continue
    if ((seq[i] == 'L') & (i < len(seq) - 4)):
        if ((seq[i+1] == 'B') & (seq[i+2] == 'T')):
            w = 'LBT'
            cond = 'skip'
        else: 
            w = seq[i]
    else:
        w = seq[i]
    s = s+w
    sout.append(s)
seqout.append(sout)
2个回答

4

您可以在re.split中的第一个参数(模式)周围放置( )

import re

seq = re.split(r"(LBT)", "HLHLBTS")
print(seq)

输出:

['HLH', 'LBT', 'S']

0
使用sub()插入分隔符,然后使用split()
import re

re.sub("^(.*)(LBT)(.*)$", r"\1|\2|\3", "HLHLBTS").split("|")

输出

['HLH', 'LBT', 'S']

尝试使用字符串ALBTHLHLBTS,你会发现你的方法与re.split()的方法不等价。 - SeaBean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接