按“. ”、“! ”或“? ”分割字符串并保留标点符号

3 投票
1 回答
16053 浏览
提问于 2025-04-17 14:18

可能重复的问题:
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?", "!")

简单来说,我想在 ". ""! ""? " 这些地方进行分割,但我希望在分割的地方去掉空格,但保留句号、逗号或问号。

我该怎么做才能高效地实现这个呢?

字符串的分割函数只接受一个分隔符。我在想,最好的办法是先把字符串按空格分割,然后再找出那些以句号、逗号或问号结尾的部分,来构建我想要的结果。

相关问题:

1 个回答

18

你可以通过使用正则表达式来分割字符串:

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

这里的正则表达式 '(?<=[.!?]) +' 的意思是:只有在前面有一个句号(.)、感叹号(!)或者问号(?)的情况下,才匹配一个或多个空格(' +')。

撰写回答