首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于模式的句子划分

基于模式的句子划分
EN

Stack Overflow用户
提问于 2017-01-27 09:09:43
回答 1查看 77关注 0票数 1

我想根据python中的分隔符将文本分成几个句子。但是,我不想根据数字之间的小数点或数字之间的逗号来分割它们。我们怎么能无视他们。

例如,我有一个文本如下所示。

代码语言:javascript
复制
I am xyz.I have 44.44$. I would like, to give 44,44 cents to my friend. 

句子必须是

代码语言:javascript
复制
I am xyz
I have 44.44$
I would like
to give 44,44 cents to my friend

你能帮我处理一下正则表达式吗。如果这个问题以前已经问过了,我很抱歉。我找不到它。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-27 09:15:14

这适用于您的示例,虽然在最后一部分有一个尾声句号(句号),如果这一点重要的话。

代码语言:javascript
复制
import re

s = 'I am xyz. I have 44.44$. I would like, to give 44,44 cents to my friend.'

for part in re.split('[.,]\s+', s):
    print(part)

输出

代码语言:javascript
复制
I am xyz
I have 44.44$
I would like
to give 44,44 cents to my friend.

Wiktor的表达式\s*[.,](?!\d)\s将适用于您的新示例:

代码语言:javascript
复制
I am xyz.I have 44.44$. I would like, to give 44,44 cents to my friend.

把它拆开:

  • \s*将与许多空白字符匹配0。
  • [.,]将匹配,.字符。
  • 如果此时匹配一个数字,(?!\d)将导致该匹配被丢弃。这对于避免在数中分裂是必要的。
  • \s将匹配单个空白字符。

请注意,对于“我是22.10年前的我12岁”这样的句子,它仍然会失败,尽管我认为没有任何方法可以单独使用正则表达式来解决这个问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41890311

复制
相关文章

相似问题

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