2015-07-23 3 views
0

Функция translate дает мне ошибку, что я даю ей 2 члена, и я должен передавать ее точно 1. Это правильный код, основанный на книгах, которые я использую в настоящее время. Я использую Python 3.4.translate() function error

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) 

ответ

0

должна быть добавлена ​​строка коды и перевод строка изменения:

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

Существуют изменения в Python 3.x, где кортеж должен быть передан в функцию перевода, так что должен быть создан в словаре до и затем передан для перевода метода.