在Python中拆分字符串时如何保留分隔符?

时间:2019-10-30 00:46:37

标签: python python-3.x

在Python中,while character: dat1 = character.pop(0) 的工作方式如下,

split

但是,如果我想保留分隔符(即示例中的x = 'A.B.C' x.split('.') # ['A', 'B', 'C'] )怎么办?换句话说,我想在示例中获得'.'而不是['A', '.', 'B', '.', 'C']

2 个答案:

答案 0 :(得分:3)

您可以使用正则表达式来实现。 re.split()函数根据给定的模式分割给定的字符串(“ \ W”表示任何非字母字符)。如果模式被括号括起来,那么模式字符串也将被返回。

import re
str = 'A.B.C'
re.split('(\W)', str)
['A', '.', 'B', '.', 'C']

答案 1 :(得分:0)

您可以创建自己的分割方法:

def split_with_sep(s, sep):
    *most, last = s.split(sep)
    l = [j for i in most for j in [i, sep]]
    l.append(last)
    return l

>>> split_with_sep(x, '.')
['A', '.', 'B', '.', 'C']

有您想要的某物,即str.partition

>>> x = 'A.B.C'
>>> x.partition('.')
('A', '.', 'B.C')

但这并不能完全满足您的要求-您必须编写某种递归函数。

您也可以使用re.split

>>> re.split("(\.)", "A.B.C")
['A', '.', 'B', '.', 'C']

使分隔符成为捕获组,会将其包括在输出中。

相关问题