2017-07-29 62 views
0

我遇到了一个程序,我需要为我的编程类创建困难。该类使用Python 3,并且该任务是创建一个读取文件并显示所述文件的一致性的程序。我遇到的问题是,当我通过程序运行一个文件时,它将计算每个字符在程序中的数量而不是字数。下面是我的程序:问题与协调程序

print ("enter file name") 
f = input() 
file = open(f) 
z = file.read() 
numdict = {} 
my_num = 0 
with open(f) as file: 
    [word for line in z for word in line.split()] 
for word in z: 
    if not word in numdict: 
     numdict[word] = [] 

    numdict[word].append(my_num) 

print("word" , "frequency") 
for key in sorted(numdict): 
    print(key, len(numdict[key])) 

回答

0

首先,我不是很确定你想与

with open(f) as file: 
    [word for line in z for word in line.split()] 

完成的任务,但该行没有做任何事情,因为它没有保存列表你正在建造任何地方,所以你可以删除它。

你是问题在for word in z:。由于z = file.read(),z存储了一个字符串,其中包含整个文件的文本,这意味着当您遍历它时(for word in z:),您将为设置z中的每个字符。

你想要做什么,而不是通过的z.split()结果,这将给你在z每一个字重复即for word in z.split()

0

好像你混淆自己一点。这是一个幼稚的,但教学方法。 (天真,因为它不涉及边缘案例和标点符号)。该意见将有助于理解这是怎么回事:

wordDict = {} 

with open('file.txt') as file: 
    for line in file: 
     #line is one line in the file 
     words = line.strip().split() 
     #words is an array or words that were in line 
     for word in words: 
      #word is one word from the words array 
      if word in wordDict: 
       wordDict[word] += 1 
      else: 
       wordDict[word] = 1 

如果file.txt看起来是这样的:

你好你好你好你好你好你好
这是怎么回事

要去上你wordDict将如下所示:

{'Hello': 6, 'What': 1, 'is': 1, 'going': 2, 'on': 3}