在Python中,while character:
dat1 = character.pop(0)
的工作方式如下,
split
但是,如果我想保留分隔符(即示例中的x = 'A.B.C'
x.split('.') # ['A', 'B', 'C']
)怎么办?换句话说,我想在示例中获得'.'
而不是['A', '.', 'B', '.', 'C']
。
答案 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']
使分隔符成为捕获组,会将其包括在输出中。