首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在句号结束后没有空格时,如何将文本分割成句子?

在句号结束后没有空格时,如何将文本分割成句子?
EN

Stack Overflow用户
提问于 2017-02-24 18:28:59
回答 2查看 3.1K关注 0票数 0

我有一条短信

由Lapindo Brantas in .运营的东爪哇泗水附近的一口气井自去年5月开始喷出蒸腾的泥浆,淹没了村庄、工业和油田。由PT Lapindo Brantas运营的东爪哇泗水附近的一口气井自去年5月以来已喷出蒸汽泥浆,淹没了村庄、工厂和印度尼西亚社会福利协调部长Aburizal Bakrie,其家族公司控制着Lapindo Brantas,他说火山是一场“自然灾害”,与上个月钻探activities.President Susilo Bambang Yudhoyono无关,该公司命令Lapindo支付3.8万亿卢比(4.207亿美元)的赔偿金和费用。

我想把它分成几个句子。NLTK或我在网上发现的任何标准正则表达式都失败了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-24 18:40:28

您可以使用正则表达式正向前看,在句子末尾添加空格,然后将其传递给您选择的工具。这将为没有句点的句点添加一个空格,但跳过非字母数字(如逗号)。通过坚持字符类而不是A-Z,这适用于任何语言。

代码语言:javascript
复制
>>> re.sub(r'\.(?=[^ \W\d])', '. ', 'Foo bar.Baz Inc., foobar. 1.1, and abc._')
'Foo bar. Baz Inc., foobar. 1.1, and abc. _'

您可以通过添加另一个前瞻性搜索斜杠来捕获一些urls。

代码语言:javascript
复制
>>> re.sub(r'\.(?=[^ \W\d])(?=[^\w*]/)', '. ', 'Foo bar.Baz Inc., foobar. 1.1, and abc._ http://www.example.com/whatever')
'Foo bar.Baz Inc., foobar. 1.1, and abc._ http://www.example.com/whatever'
票数 4
EN

Stack Overflow用户

发布于 2017-02-24 18:34:23

您可以使用这个正则表达式来捕捉后面跟着新句子的点。

(\.)(?:[A-Z]) --您可以用r‘\1\n作为替换将其传递给re.sub

parsed_text = re.sub(r'(\.)(?:[A-Z])',r'\1\n',your_text)

你也可以把它分割成一个句子列表(但你在结尾会失去点)。

代码语言:javascript
复制
 sentence_list = re.split(r'\.(?=[A-Z])',your_text)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42445842

复制
相关文章

相似问题

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