限制字符串中的句子数量
一个初学者的Python问题:
我有一串文字,里面有x个句子。我该怎么提取前两个句子呢?这些句子可能以句号(.)、问号(?)或者感叹号(!)结尾。
5 个回答
0
这是你可以这样做的方法:
str = "Sentence one? Sentence two. Sentence three? Sentence four. Sentence five."
sentences = str.split(".")
allSentences = []
for sentence in sentences
allSentences.extend(sentence.split("?"))
print allSentences[0:3]
可能还有更好的方法,我期待看到它们。
10
忽略一些考虑,比如一个 .
什么时候算作句子的结束:
import re
' '.join(re.split(r'(?<=[.?!])\s+', phrase, 2)[:-1])
编辑:我刚想到的另一种方法是:
re.match(r'(.*?[.?!](?:\s+.*?[.?!]){0,1})', phrase).group(1)
注意事项:
- 第一个解决方案允许你把2替换成其他数字,以选择不同数量的句子;而在第二个解决方案中,你需要把
{0,1}
中的1改成你想提取的句子数量减一。 - 第二个解决方案在处理一些特殊情况时,比如空字符串或没有标点的字符串,表现得没有那么好。虽然可以改进,但正则表达式会变得更加复杂,我更倾向于选择第一个稍微效率低一点的解决方案,而不是让人看不懂的复杂代码。