2016-10-14 1 views
0

Ich habe eine Funktion gemacht, zählte ich, wie oft jedes Wort in einer Datei verwendet wird, wird das Wort Frequenz sagen. Im Moment kann die Funktion die Summe aller Wörter berechnen und mir die sieben häufigsten Wörter zeigen und wie oft sie benutzt werden. Jetzt möchte ich meine erste Datei vergleichen, wo ich die Worthäufigkeit mit einer anderen Datei analysiert habe, wo ich die gebräuchlichsten Wörter in der englischen Sprache verwende, und ich möchte diese Wörter mit den Wörtern vergleichen, die ich in meiner ersten Datei habe, um zu sehen, ob jedes der Wörter stimmt überein.dict zu listen, und vergleichen Sie Listen Python

Was ich habe, ist, Listen der zwei Dateien zu machen und sie dann miteinander zu vergleichen. Aber der Code, den ich dafür geschrieben habe, gibt mir keine Ausgabe, keine Ahnung, wie ich das lösen kann?

def CountWords(): 
filename = input('What is the name of the textfile you want to open?: ') 
if filename == "alice" or "alice-ch1.txt" or " ": 
    file = open("alice-ch1.txt","r") 
    print('You want to open alice-ch1.txt') 
    wordcount = {} 
    for word in file.read().split(): 
     if word not in wordcount: 
      wordcount[word] = 1 
     else: 
      wordcount[word] += 1           
    wordcount = {k.lower(): v for k, v in wordcount.items() } 
    print (wordcount) 

    sum = 0 
    for val in wordcount.values(): 
     sum += val 
    print ('The total amount of words in Alice adventures in wonderland: ' + str(sum)) 
    sortList = sorted(wordcount.values(), reverse = True) 
    most_freq_7 = sortList[0:7] 
    #print (most_freq_7) 
    print ('Totoro says: The 7 most common words in Alice Adventures in Wonderland:') 
    print(list(wordcount.keys())[list(wordcount.values()).index(most_freq_7[0])] + " " + str(most_freq_7[0])) 
    print(list(wordcount.keys())[list(wordcount.values()).index(most_freq_7[1])] + " " + str(most_freq_7[1])) 
    print(list(wordcount.keys())[list(wordcount.values()).index(most_freq_7[2])] + " " + str(most_freq_7[2])) 
    print(list(wordcount.keys())[list(wordcount.values()).index(most_freq_7[3])] + " " + str(most_freq_7[3])) 
    print(list(wordcount.keys())[list(wordcount.values()).index(most_freq_7[4])] + " " + str(most_freq_7[4])) 
    print(list(wordcount.keys())[list(wordcount.values()).index(most_freq_7[5])] + " " + str(most_freq_7[5])) 
    print(list(wordcount.keys())[list(wordcount.values()).index(most_freq_7[6])] + " " + str(most_freq_7[6])) 

    file_common = open("common-words.txt", "r") 
    commonwords = [] 
    contents = file_common.readlines() 

    for i in range(len(contents)): 
     commonwords.append(contents[i].strip('\n')) 
    print(commonwords) 

#From here's the code were I need to find out how to compare the lists: 
    alice_keys = wordcount.keys() 
    result = set(filter(set(alice_keys).__contains__, commonwords)) 
    newlist = list() 


    for elm in alice_keys: 
     if elm not in result: 
      newlist.append(elm) 
    print('Here are the similar words: ' + str(newlist)) #Why doesn't show? 


else: 
    print ('I am sorry, that filename does not exist. Please try again.')    

Antwort

0

Ich bin nicht vor einem Interpreter, so dass mein Code leicht aus sein könnte. Aber versuchen Sie etwas mehr so.

from collections import Counter 
with open("some_file_with_words") as f_file 
    counter = Counter(f_file.read()) 
    top_seven = counter.most_common(7) 
    with open("commonwords") as f_common: 
    common_words = f_common.read().split() 
    for word, count in top_seven: 
     if word in common_words: 
     print "your word " + word + " is in the most common words! It appeared " + str(count) + " times!" 
+0

Danke @ bravosierra99! – Allizon

+0

es kommt als Zeichen heraus obwohl "dein Wort e ist in den allgemeinsten Wörtern ...." und nicht als Wörter ... – Allizon

+0

wie wird deine allgemeine Wortakte aufgebaut? Ich habe es mit .split(), was bedeutet, dass die Wörter mit Leerzeichen getrennt werden müssen. Sie müssen diesen Code für die Einrichtung Ihrer allgemeinen Wortdatei anpassen. – bravosierra99