translate()函数错误

时间:2015-07-23 16:34:54

标签: python

翻译功能给我一个错误,我给它2个成员,我应该正确地传递它1.这是基于我目前正在使用的书籍的正确代码。我使用的是Python 3.4。

import string
fhand=open("c:\Python34\Leos code\mbox.txt")
dictsort = dict()
#decorate dictionary
for line in fhand:
    line = line.translate(None, string.punctuation)
    line = line.lower()
    words = line.split()
    for word in words:
        if word not in dictsort:
            dictsort[word]= 1
        else:
            dictsort[word] += 1
#sort dictionary
dictlst = []
for k,v in dictsort.items():
    dictlst.append((v,k))
dictlst.sort(reverse=True)
for k,v in dictlst[:10]:
    print (k,v)

1 个答案:

答案 0 :(得分:0)

应添加一行代码并修改翻译行:

remove_punctuation_map = dict((ord(char), None) for char in string.punctuation)
line = line.translate(remove_punctuation_map)

Python 3.x中有一个更改,其中元组需要传递给translate函数,因此需要先在字典中创建,然后传递给translate方法。