我正在尝试将字符串拆分为已知子字符串(子字符)块。如果我能够在输出中保留分隔符,我相信我可以实现这一点。
例如:
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)
答案 0 :(得分:4)
您可以将 ( )
放在 re.split
中的第一个参数(模式)周围:
import re
seq = re.split(r"(LBT)", "HLHLBTS")
print(seq)
打印:
['HLH', 'LBT', 'S']
答案 1 :(得分:0)
使用 sub()
插入分隔符,然后使用 split()
import re
re.sub("^(.*)(LBT)(.*)$", r"\1|\2|\3", "HLHLBTS").split("|")
['HLH', 'LBT', 'S']