擅长:python、mysql、java
<p>这比张提摩西的回答有所改进,正确处理了更多的案件。请参阅内联注释。也就是说,处理所有的例外和奇怪的大写是一个相当复杂的语言问题。最好使用预先准备好的解决方案(有人建议使用Python自然语言工具包NLTK)或完全避免这个问题。在</p>
<pre><code>import re
s1 = "hey. how are you? the c.i.a. is watching! lol."
print re.sub(r"(\A\w)|"+ # start of string
"(?<!\.\w)([\.?!] )\w|"+ # after a ?/!/. and a space,
# but not after an acronym
"\w(?:\.\w)|"+ # start/middle of acronym
"(?<=\w\.)\w", # end of acronym
lambda x: x.group().upper(),
s1)
</code></pre>
<blockquote>
<p>Hey. How are you? The C.I.A. is watching! Lol.</p>
</blockquote>