2

可能重复:
Python split() 不删除分隔符

我希望按如下方式拆分字符串:

text = " T?e  qu!ck ' brown 1 fox!     jumps-.ver. the 'lazy' doG?  !"
result -> (" T?e  qu!ck ' brown 1 fox!", "jumps-.ver.", "the 'lazy' doG?", "!")

所以基本上我想在 处分割". ""! "或者"? "但我希望删除分割点处的空格,而不是点、逗号或问号。

我怎样才能有效地做到这一点?

str split 函数只接受分隔符。我想知道在构建所需结果时拆分所有空格然后找到以点、逗号或问号结尾的最佳解决方案。

4

1 回答 1

14

您可以使用正则表达式拆分来实现此目的:

>>> import re
>>> text = " T?e  qu!ck ' brown 1 fox! jumps-.ver. the 'lazy' doG?  !"
>>> re.split('(?<=[.!?]) +',text)
[" T?e  qu!ck ' brown 1 fox!", 'jumps-.ver.', "the 'lazy' doG?", '!']

正则表达式'(?<=[.!?]) +'意味着匹配一个或多个空格 ( ' +') 的序列,只有在前面有一个 ., ! 或者 ?字符 ( '(?<=[.!?])')。

于 2013-01-31T09:57:13.713 回答