您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

一个正则表达式,用于从python的一个段落中提取句子

一个正则表达式,用于从python的一个段落中提取句子

例如,您发布的段落的第一句用双引号"引起来,而引号紧接在句号之后: 感染。”

您的正则表达式[.!?]\s{1,2}正在寻找一个句点,后跟一个或两个空格作为句子终止符,因此它不会被抓住。

可以通过允许使用可选的右引号进行调整以应对这种情况:

sentenceEnders = re.compile(r'''[.!?]['"]?\s{1,2}(?=[A-Z])''')

但是,使用上述正则表达式,您将删除句子的结尾引号。保持它有些棘手,可以使用后向断言来实现:

sentenceEnders = re.compile(r'''(?<=[.!?]['"\s])\s*(?=[A-Z])''')

但是请注意,在许多情况下,基于正则表达式的拆分器会失败,例如:

缩写: “在AB Givental博士的作品中……” -根据您的正则表达式,这将在 “ Dr.” 之后错误地拆分。 , “ A”。“ B”。 (您可以调整单字母的大小写,但是除非对它进行硬编码,否则无法检测到缩写。)

在句子的中间使用感叹号: “……何时,瞧瞧!德夏先生亲自出现……”

使用多个引号和嵌套引号等

python 2022/1/1 18:30:18 有495人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶