按“. ”、“! ”或“? ”分割字符串并保留标点符号
可能重复的问题:
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?", '!']
这里的正则表达式 '(?<=[.!?]) +' 的意思是:只有在前面有一个句号(.)、感叹号(!)或者问号(?)的情况下,才匹配一个或多个空格(' +')。