首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:如何使用regex将句子拆分为新行,然后使用空格将标点符号和单词分开?

Python:如何使用regex将句子拆分为新行,然后使用空格将标点符号和单词分开?
EN

Stack Overflow用户
提问于 2015-01-07 06:36:40
回答 2查看 2.5K关注 0票数 2

我有以下意见:

代码语言:javascript
复制
input = "I love programming with Python-3.3! Do you? It's great... I give it a 10/10. It's free-to-use, no $$$ involved!"

首先,每句话都应该移到一个新的行。然后,除"/“、”‘“、"-”、"+“和"$”外,所有标点符号都应与单词分开。

因此,产出应该是:

代码语言:javascript
复制
"I love programming with Python-3 . 3 ! 
Do you ?  
It's great . . . 
I give it a 10/10 . 
It's free-to-use , no $$$ involved !"

我使用了以下代码:

代码语言:javascript
复制
>>> import re
>>> re.sub(r"([\w/'+$\s-]+|[^\w/'+$\s-]+)\s*", r"\1 ", input)
"I love programming with Python-3 . 3 ! Do you ? It's great ... I give it a 10/10 . It's free-    to-use , no $$$ involved ! "

但问题是它并没有把句子分成新的行。在创建标点符号和字符之间的空白之前,我如何使用正则表达式来实现这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-07 06:55:14

代码语言:javascript
复制
([!?.])(?=\s*[A-Z])\s*

您可以使用此正则表达式在regex.See demo.Replace by \1\n之前创建句子。

https://regex101.com/r/sH8aR8/5

代码语言:javascript
复制
x="I love programming with Python-3.3! Do you? It's great... I give it a 10/10. It's free-to-use, no $$$ involved!"
print re.sub(r"([!?.])(?=\s*[A-Z])",r"\1\n",x)

编辑:

代码语言:javascript
复制
(?<![A-Z][a-z])([!?.])(?=\s*[A-Z])\s*

尝试不同数据集的this.See演示。

https://regex101.com/r/sH8aR8/9

票数 2
EN

Stack Overflow用户

发布于 2015-01-07 06:50:55

有点像

代码语言:javascript
复制
>>> import re
>>> from string import punctuation
>>> print re.sub(r'(?<=['+punctuation+'])\s+(?=[A-Z])', '\n', input)
I love programming with Python-3.3!
Do you?
It's great...
I give it a 10/10.
It's free-to-use, no $$$ involved!
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27813744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档