<p>有几点:</p>
<p>在Python中,始终使用以下构造读取文件:</p>
<pre><code> with open('ls;df', 'r') as f:
# rest of the statements
</code></pre>
<p>如果您使用<code>f.read().split()</code>,那么它将读取到文件的末尾。之后,你需要回到开始:</p>
<pre><code>f.seek(0)
</code></pre>
<p>第三,你所做的部分:</p>
<pre><code>for w in words:
if i < count:
words[i].translate(None, string.punctuation).lower()
i += 1
else:
i += 1
print words
</code></pre>
<p>您不需要在Python中保留计数器。你可以简单地。。。</p>
<pre><code>for i, w in enumerate(words):
if i < count:
words[i].translate(None, string.punctuation).lower()
else:
print words
</code></pre>
<p>但是,您甚至不需要在这里检查<code>i < count</code>。。。你可以简单地做:</p>
<pre><code>words = [w.translate(None, string.punctuation).lower() for w in words]
</code></pre>
<p>最后,如果您只想计算<code>states</code>,而不想创建一个完整的项字典,请考虑使用filter。。。。</p>
<pre><code>print len(filter( lambda m: m == 'states', words ))
</code></pre>
<p>最后一件事。。。</p>
<p>如果文件很大,不宜一次把每个字都记下来。考虑逐行更新<code>wc</code>字典。与其做你做的事,你可以考虑:</p>
<pre><code>for line in f:
words = line.split()
# rest of your code
</code></pre>