擅长:python、mysql、java
<p>这里有一个更可靠的解决方案:</p>
<pre><code>myarticle = """This is a sentence.
And another one.
And a 3rd one."""
N = 3 # 3 sentences
print ''.join(sentence+'.' for sentence in re.split('\.(?=\s*(?:[A-Z]|$))', myarticle, maxsplit=N)[:-1])
</code></pre>
<p>与前面提到的其他一些可能性相比,此解决方案有一些优势:</p>
<ol>
<li><p>即使在你的文本中确实有<code>N</code>个句子,它也能工作。其他一些答案在结尾处产生一个双<code>.</code>。考虑到最后一个句子后面不是大写字母,而是文本的结尾(<code>$</code>),可以避免这种情况。</p></li>
<li><p>即使在文本中少于<code>N</code>个句子,这种方法仍然有效。</p></li>
<li><p>拆分的数量由<code>maxsplit</code>参数限制为<code>re.split()</code>,这限制了拆分的数量,因此非常有效。</p></li>
</ol>
<p>希望这有帮助!在</p>