我需要从文本中获取前n个句子,其中最后一个字符可以是句点、冒号或分号。例如,给定此文本:

Lorem ipsum, dolor sit amet. consectetur adipisicing elit; sed do eiusmod tempor.
incididunt ut labore: et dolore magna aliqua. Ut enim ad. minim veniam.

前4句话是,
Lorem ipsum, dolor sit amet. consectetur adipisicing elit; sed do eiusmod tempor.
incididunt ut labore:

目前,我的代码正在使用.:;作为分隔符拆分字符串,然后加入结果。
import re
sentences = re.split('\. |: |;', text)
summary = ' '.join(sentences[:4])

但它将从结果中删除分隔符我对regex或基本字符串操作持开放态度。

最佳答案

>>> import re
>>> text = "Lorem ipsum, dolor sit amet. consectetur adipisicing elit; sed do eiusmod tempor. incididunt ut labore: et dolore magna aliqua. Ut enim ad. minim veniam."
>>> ' '.join(re.split(r'(?<=[.:;])\s', text)[:4])
'Lorem ipsum, dolor sit amet. consectetur adipisicing elit; sed do eiusmod tempor. incididunt ut labore:'

这样做会更有效,通过格式化4,根据您的需要进行调整:
>>> re.match(r'(?:[^.:;]+[.:;]){4}', text).group()
'Lorem ipsum, dolor sit amet. consectetur adipisicing elit; sed do eiusmod tempor. incididunt ut labore:'

09-25 19:04