擅长:python、mysql、java
<p>方法<code>WordNetLemmatizer.lemmatize</code>可能需要一个字符串,但您要向它传递一个字符串列表。这给了您一个<code>TypeError</code>异常。</p>
<p><code>line.split()</code>的结果是作为列表附加到<code>results</code>的字符串列表,即列表列表列表。</p>
<p>你想使用<code>results.extend(line.strip().split())</code></p>
<pre><code>results = []
with open('/Users/xyz/Documents/something5.txt', 'r') as f:
for line in f:
results.extend(line.strip().split())
lemma = WordNetLemmatizer()
lem = map(lemma.lemmatize, results)
with open("lem.txt", "w") as t:
for item in lem:
print >> t, item
</code></pre>
<p>或者在没有中间结果列表的情况下重构</p>
<pre><code>def words(fname):
with open(fname, 'r') as document:
for line in document:
for word in line.strip().split():
yield word
lemma = WordNetLemmatizer()
lem = map(lemma.lemmatize, words('/Users/xyz/Documents/something5.txt'))
</code></pre>