python – 文件解析问题

我对我的作业问题有疑问.这是问题所在:

编写一个程序,读取一个名为input.txt的文本文件,其中包含任意数量的形式为“,”的行,然后使用字典记录此信息,最后向屏幕输出文件中所代表的国家列表和数字包含的城市.

例如,如果input.txt包含以下内容:

美国纽约
昂热,法国
美国洛杉矶
波城,法国
法国敦刻尔克
沙特阿拉伯麦加

该程序将输出以下内容(按某种顺序):

沙特阿拉伯:1
美国:2
法国:3

这是我的代码:

def addword(w,wcDict):
    if w in wcDict:
        wcDict[w] +=1
    else:
        wcDict[w]= 1

import string
def processLine(line, wcDict):
    wordlist= line.strip().split(",")
    for word in wordlist:
        word= word.lower().strip()
        word=word.strip(string.punctuation)
        addword(wordlist[1], wcDict)

def prettyprint(wcDict):
    valkeylist= [(val,key) for key,val in wcDict.items()]
    valkeylist.sort(reverse = True)
    for val,key in valkeylist:
        print '%-12s    %3d'%(key,val)

def main():
    wcDict={}
    fobj= open('prob1.txt','r')
    for line in fobj:
        processLine(line, wcDict)
    prettyprint (wcDict)

 main()

我的代码计算每个国家两次.你能帮我么?

谢谢

最佳答案 在processLine函数中,您有一个无关的循环. wordlist将始终包含两个条目,即城市和国家/地区.因此,for循环中的代码(包括addword)将被执行两次 – 您可以完全删除for语句,它应该按预期工作.

点赞