2016-10-25 5 views
0

würde wirklich einige Hilfe benötigen, um dies zu lösen, oder wenn mir jemand auf die richtige Weise zeigen könnte, danke!Sehen Sie sich die 7 häufigsten Wörter im Text an, aber sortieren Sie die Wörter, die geläufige Wörter sind

Sehen Sie sich die 7 häufigsten Wörter im Text an, aber sortieren Sie die Wörter aus, die häufig vorkommende Wörter sind. Sie können eine Liste der gebräuchlichen Wörter in common-words.txt finden.

common-words.txt = viele verschiedene Wörter.

Zuerst habe ich die 7 häufigsten Wörter im Text gefunden, so sieht mein Code aus.

print("The 7 most frequently used words is:") 
    print("\n") 

    import re 
    from collections import Counter 

    with open("alice-ch1.txt") as f: 
     passage = f.read() 

    words = re.findall(r'\w+', passage) 

    cap_words = [word.upper() for word in words] 

    word_counts = Counter(cap_words).most_common(7) 

    print(word_counts) 

das funktioniert und ich bekomme die Ausgabe:

[('THE', 93), ('SHE', 80), ('TO', 75), ('IT', 67), ('AND', 65), ('WAS', 53), ('A', 52)] 

jetzt möchte ich diesem Fall entweder zwei Textdateien vergleichen, wenn überhaupt das Wort in meinem textfile.txt in COMMON-words.txt i will es von der Antwort entfernt haben.

Ich habe versucht, es mit diesem Code auszuführen:

dic_no_cw = dict(word_counts) 
    with open("common-words.txt", 'r') as cw: 
     commonwords = list(cw.read().split()) 
     for key, value in list(dic_no_cw.items()): 
      for line in commonwords: 
       if key == line: 
        del dic_no_cw[key] 

    dict_copy = dict(dic_no_cw) 

    dic_no_cw7 = Counter(dic_no_cw).most_common(7) 
    sorted(dic_no_cw7) 

    print(dic_no_cw7) 

und ich bekomme die gleiche Ausgabe:

[('THE', 93), ('SHE', 80), ('TO', 75), ('IT', 67), ('AND', 65), ('WAS', 53), ('A', 52)] 

wirklich Hilfe gebrauchen som könnte dies oder etwas Hilfe, damit ich vielleicht kann lösen finde es selbst heraus.

Dank,

+0

Sie bitte Ihre Einbuchtung für den ersten Codeblock –

+0

Schnell Gedanken fixieren - sind die Worte in COMMON-Wort Alle schon in Großbuchstaben? – Stygies

+0

Nein die Worte in COMMON-WORDS gemischt, einige Wörter beginnen mit einem Großbuchstaben einige Wörter nicht. –

Antwort

1

können Sie versuchen, mit diesen Zeilen Code zu ersetzen:

for line in commonwords: 
    if key == line: 
     del dic_no_cw[key] 

mit

for line in commonwords: 
    if key.strip() == line.upper().strip(): 
     del dic_no_cw[key] 
     break 
+0

Versuchte ersetzen wie Sie gesagt haben, erhalte ich die folgende Meldung „Linie 434, in commonwords del dic_no_cw [key] KeyError:‚IT‘“ –

+0

scheint seine Arbeits .. aber das Problem ist, wenn das Wort erstmals auftritt Der Diktatschlüssel wird gelöscht und gibt KeyError aus, wenn das gleiche Wort zum zweiten Mal auftritt. – SunilT

+0

ahh okay, ich bekomme es jetzt, aber gibt es da eh das zu lösen? –

0

ich es nicht überprüft haben, aber ich denke, es ist, dass Sie den Wert in der dict sind einfach sein kann Überprüfung der Überprüfung (was die Anzahl, wie oft das Wort erscheint darstellt) anstelle der Taste (das eigentliche Wort selbst) beim Vergleich mit den Wörtern in der commonwords Liste:

Ich glaube, if value == line: sollte if key == line: lesen.

+0

Ich habe versucht, zu ersetzen, wenn "Wert == Zeile:" mit "Wenn Schlüssel == Zeile:" Ich bekomme die gleiche Ausgabe wie zuvor. –

Verwandte Themen