【发布时间】:2014-11-04 20:45:47
【问题描述】:
我是 Python 新手,正在开发一个程序,该程序将计算简单文本文件中单词的实例。程序和文本文件将从命令行读取,因此我在我的编程语法中包含了用于检查命令行参数的内容。代码如下
import sys
count={}
with open(sys.argv[1],'r') as f:
for line in f:
for word in line.split():
if word not in count:
count[word] = 1
else:
count[word] += 1
print(word,count[word])
file.close()
count 是一个字典,用于存储单词和它们出现的次数。我希望能够打印出每个单词及其出现的次数,从出现次数最多到出现次数最少。
我想知道我是否走在正确的轨道上,以及我是否正确使用了 sys。谢谢!!
【问题讨论】:
-
看起来不错并且相当 Pythonic。不过,处理每行末尾的换行符,最后一个字符将是 '\n' 这会弄乱你的计数。你会想要使用
for word in line[:-1].split():或其他东西。 -
@Gaz Davidson:
line.split()将清理所有空白。 -
您可能喜欢使用 re.findall(r'\w+', ...) 将内容分成单词,因为它不仅仅将空格作为分隔符...参见this example from the python docs跨度>
标签: python