python - 在 ". ","! "或 "? "上拆分字符串,保留标点符号

标签 python python-3.x

<分区>

Possible Duplicate:
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 函数只接受分隔符。我想知道最好的解决方案是拆分所有空格,然后在构造所需结果时找到以点、逗号或问号结尾的空格。

最佳答案

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

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

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

关于python - 在 ". ","! "或 "? "上拆分字符串,保留标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14622835/

相关文章:

使用下一页 token 的 Pythonic 方式

python - 在具有 O(1) 复杂性的列表中查找/检查项目的大多数 Pythonic 方法?

python - Python 3 中的迭代器

c++ - 在 C++ 中使用 cURL 和多线程

python - 如何在 kivy android 和 ios 中实现支付网关和钱包等概念

python - "Literally"将字符串转换为字节数组

python - 必须根据另一列中的长度值拆分数据框列

python - 如何在 Pandas 中按年份显示饼图

python - python 中的整数与 float :Cannot understand the behavior

python - TensorFlow while_loop() 的非确定性行为