限制字符串中的句子数量

anr*_*ots 4 python

初学者的Python问题:

我有一个包含x个句子的字符串.如何提取前2个句子(可能以.或?或!结尾)

Mar*_*tos 10

忽略诸如.构成句子结尾时的考虑因素:

import re
' '.join(re.split(r'(?<=[.?!])\s+', phrase, 2)[:-1])
Run Code Online (Sandbox Code Playgroud)

编辑:刚刚发生的另一种方法是:

re.match(r'(.*?[.?!](?:\s+.*?[.?!]){0,1})', phrase).group(1)
Run Code Online (Sandbox Code Playgroud)

笔记:

  1. 虽然第一个解决方案允许您将2替换为其他数字以选择不同数量的句子,但在第二个解决方案中,您将1更改为{0,1}比想要提取的句子数少1 .
  2. 第二种解决方案在处理方面不够稳健,例如空字符串或没有标点符号的字符串.它可以这样做,但正则表达式将比现在更复杂,我更倾向于效率稍低的第一个解决方案而不是一个难以理解的混乱.