擅长:python、mysql、java
<p>正如您所猜测的,问题在于字符串中存在unicode字符,因为没有一个ASCII字符具有与em破折号相同的值,<code>PORTLAND, Maine — FairPoint Communications</code>中的分隔符解释不好,变成了<code>\xe2\x80\x94</code>,而不是{<cd3>}。在</p>
<p>有几个选项可以让您随心所欲:</p>
<ul>
<li>将源代码编码定义为unicode(将<code># -*- coding: utf-8 -*-</code>设置为前两行中的任意一行),并将额外字符添加到正则表达式中。在</li>
<li>您可以使用一个可用的库将字符串转换为ACSII(请参见<a href="https://stackoverflow.com/questions/1207457/convert-a-unicode-string-to-a-string-in-python-containing-extra-symbols">convert a unicode string</a>)</li>
<li>使用与re(<code>sep = re.split(ur'-|:| |\u2014', sent)</code>)兼容的unicode正则表达式</li>
<li>或者按照re <a href="https://docs.python.org/2/library/re.html#re.U" rel="nofollow noreferrer">documentation</a>中的建议使用<a href="https://pypi.python.org/pypi/regex/" rel="nofollow noreferrer">regex</a>模块。在</li>
</ul>