Python语言中re
模块的一个特殊特性是re.split()
will never split a string on a zero-length match,例如,如果我想要沿着单词边界拆分一个字符串:
>>> re.split(r"\s+|\b", "Split along words, preserve punctuation!")
['Split', 'along', 'words,', 'preserve', 'punctuation!']
而不是
['', 'Split', 'along', 'words', ',', 'preserve', 'punctuation', '!']
为什么它会有这样的限制?这是设计出来的吗?其他正则表达式风格也是这样的吗?
发布于 2020-08-10 03:30:21
Python在3.7版本中支持此功能:
>>> s = "You! Are you Tom? I am Danny."
>>> re.split(r'(?<=[.!\?])', s)
['You!', ' Are you Tom?', ' I am Danny.', '']
发布于 2010-04-29 22:50:04
基本上,split()是将两个不同的函数合并为一个。如果您提供了一个参数,则它的行为与在没有提供参数的情况下调用时的行为非常不同。
乍一看,似乎
s.split() == s.split(' \t\n')
但正如您所展示的,情况并非如此。医生说:
..。如果未指定sep或为None,则任何空格字符串都是分隔符,并从结果中删除空字符串。..。
即使添加了一个'remove_empty‘参数,它仍然会表现得很奇怪,因为'remove_empty’的默认值依赖于'sep‘参数的存在。
https://stackoverflow.com/questions/2713060
复制相似问题