【问题标题】:Python/Panda string split - keeping the splitter (separator)Python/Panda 字符串拆分 - 保留拆分器(分隔符)
【发布时间】:2021-04-30 20:02:00
【问题描述】:

我正在尝试将字符串拆分为已知子字符串(子字符)的块。如果我能够将分隔符保留在输出中,我相信我可以做到这一点。

例如:

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)

【问题讨论】:

    标签: python pandas split


    【解决方案1】:

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

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

    打印:

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

    【讨论】:

      【解决方案2】:

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

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

      输出

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

      【讨论】:

      • 尝试使用字符串ALBTHLHLBTS,你会知道你的不等同于re.split()正在做的事情。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      • 2016-11-26
      • 2022-11-03
      • 1970-01-01
      相关资源
      最近更新 更多