在“。”,“!”或“?”上拆分字符串,保留标点符号

时间:2013-01-31 09:52:22

标签: python python-3.x

  

可能重复:
  Python split() without removing the delimiter

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

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函数仅在分隔符上使用。我想知道是在所有空格上拆分的最佳解决方案,然后在构造所需结果时找到以点,逗号或问号结尾的那些空格。

1 个答案:

答案 0 :(得分:9)

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

>>> 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?", '!']

正则表达式'(?<=[.!?]) +'表示仅匹配一个或多个空格(' +')的序列,如果前面带有。,!要么 ?字符('(?<=[.!?])')。

相关问题