我需要从文本中获取前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:'