代码之家  ›  专栏  ›  技术社区  ›  whackamadoodle3000

基于delimeter-python后面的字符拆分字符串

  •  2
  • whackamadoodle3000  · 技术社区  · 7 年前

    我正在尝试根据要拆分的字符串后面的字符来拆分字符串。例如,

    k="I would like to eat you"
    specialsplit(k,' ')
    

    会回来的

    ['I ', 'ould ', 'ike ', 'o ', 'at ', 'ou']
    

    k="I would like to eat you"
    specialsplit(k,'e')
    

    会回来的

    ['I would like', 'to e', 't you']
    

    def specialsplit(k,d):
        return [e[1:]+d if c!=0 or c==(len(k)-1) else e[:-1] if c==len(k)-1 else e+d for c,e in enumerate(k.split(d))]
    

    但它总是将被拆分的字符添加到最后一个元素,因此在第二个示例中,它返回 ['I would like', 'to e', 't youe'] 而不是 ['I would like', 'to e', 't you'] . 我怎样才能修复这个代码,或者我怎样才能解决这个问题?谢谢!

    1 回复  |  直到 7 年前
        1
  •  3
  •   Ajax1234    7 年前

    你可以用 re.split :

    import re
    def specialsplit(_input, _char):
      return re.split(f'(?<={_char})[\w\W]', _input)
    
    print([specialsplit("I would like to eat you", i) for i in [' ', 'e']])
    

    输出:

    [['I ', 'ould ', 'ike ', 'o ', 'at ', 'ou'], ['I would like', 'to e', 't you']]