2014-01-28 5 views
0

Я пытаюсь заменить все четыре буквенных слова в документе, который я читаю и заменяю его четырьмя звездами. Код может идентифицировать четыре буквы, но он не может их заменить. Что я делаю неправильно?Пытается использовать функцию «заменить», чтобы заменить определенные слова в строке

Это код, который у меня есть до сих пор.

# wordfreq.py 
import string 

def compareItems((w1, c1),(w2,c2)): 
    if c1 >c2: 
     return -1 
    elif c1 == c2: 
     return cmp(w1, w2) 
    else : 
     return 1 


def main() : 
    print """This program analyzes word frequency in a file and 
      prints a report on the n most frequent words. \n """ 

    # get the sequence of words from the file 
    fname = raw_input("File to analyze: ") 
    text = open(fname, 'r').read() 
    text = str.lower(text) 
    for ch in '!"#$%&()*+,-./:;<=>[email protected][[\\]^_`{|}`' : 
     text = string.replace(text, ch, ' ') 
    words = string.split(text) 

    # construct a dictionary of word counts 
    counts = {} 
    for w in words : 
     if len(w) == 4: 
      w.replace("w", "\****",) 
    print words 


if __name__ == '__main__': main() 
+0

Спасибо! Это работает отлично! –

ответ

1

str.replace() возвращает текст в обновлен, и вы пытаетесь заменять "w" снабжать струной, тетивой и т.п., а не значение в переменной w. Вам не нужно использовать здесь str.replace(); у вас есть список, и вам просто нужно заменить все элементы длины 4 на другую строку.

Используйте список понимание, чтобы заменить значения в списке:

words = ['****' if len(w) == 4 else w for w in words] 
print ' '.join(words) 
Смежные вопросы