擅长:python、mysql、java
<p>这些字符串不包含一个单词,例如“蒸发”和“阳光”单字?在我看来,你想保留unigrams,而不是删除它们。在</p>
<p>您可以使用列表理解来实现:</p>
<pre><code>list1 = ['water vapor','evaporation','carbon dioxide','sunlight','green plants']
unigrams = [word for word in list1 if ' ' not in word]
>>> print unigrams
['evaporation', 'sunlight']
</code></pre>
<p>这假设单词被一个或多个空格隔开。对于n>;1的n-gram,这可能过于简单化了,因为不同的空白字符可以分隔单词,例如制表符、换行符、各种空白unicode代码点等。您可以使用<a href="https://docs.python.org/2/library/re.html" rel="nofollow">regular expression</a>:</p>
^{pr2}$
<p>模式<code>^\S+$</code>表示从字符串开始到字符串结尾匹配所有非空白字符。在</p>
<p>如果需要支持unicode空格,可以在编译模式时指定unicode标志:</p>
<pre><code>list1.extend([u'punctuation\u2008space', u'NO-BREAKu\u00a0SPACE'])
unigram_pattern = re.compile('^\S+$', re.UNICODE)
unigrams = [word for word in list1 if unigram_pattern.match(word)]
>>> print unigrams
['evaporation', 'sunlight']
</code></pre>
<p>现在,它还将过滤掉那些包含unicode空格的字符串,例如不间断空格(U+00A0)和标点符号空格(U+2008)。在</p>