2016-11-13 6 views
0

Ich versuche zu zählen, wie oft Wörter aus einer Datei in einer anderen Datei angezeigt werden. Ich wurde auf den unten stehenden Link verwiesen, der hilfreich war, aber immer noch nicht die gewünschte Aufgabe erfüllt. Kann mir jemand helfen?Zählen Wörter aus einer Datei, in einem anderen Python

https://codereview.stackexchange.com/questions/144074/program-to-count-vowels

def count_happyW(file): 
    hap_count = 0 
    for Hwords in file.readlines(): 
     line = file.readline() 
     while line != "": 
      for item in Hwords: 
       if item in file: 
        count_happyW[item] += 1 
        return hap_count 

Ich habe auch versucht

line = file.readline() 
total = 1 * [len(h_words) for line in file.readline()] 
for token in file.readlines(): 
    while line != "":  
     line = file.readline()  
     for item in h_words:   
      if item in file:    
       total = [1] * len(item) 

+0

Sie Eingang hinzufügen können und erwartete Ausgabe? Wie es derzeit aussieht, ist die Frage etwas unklar. – niemmi

+0

Versuchen Sie Wörter in der entsprechenden Datei zu zählen? Oder versuchen Sie zu zählen, wie oft ein bestimmtes Wort erscheint? – siavashk

+0

@niemmi Entschuldigung dafür! Ich kann die erwartete Eingabe hinzufügen, für den ersten Versuch gibt es nichts aus.Aber für meinen anderen Versuch wird es ausgeben, wie viele Zeilen in der Datei sind, dass Im-Überprüfung die Wörter enthält, aber nicht die Anzahl der Wörter in jeder Zeile der Datei, sondern die Gesamtzahl der Schlüsselwörter, die ich ursprünglich in der Datei habe – HelloWorld4382

Antwort

0

yourwords.txt enthält Wörter, die Sie für Raum getrennt suchen, mein Inhalt:

apple orange bananna

yourfile.txt ist Ihre Datei, die Sie in die Suche:

apple orange bananna

an apple on the orange tree

wordcount = {} 
with open('yourwords.txt', 'r') as f1, open('yourfile.txt', 'r') as f2: 
    words = f1.read().split() 
    wordcount = { i:0 for i in words} 
    for line in f2: 
     line_split = line.split() 
     for word in line_split: 
      if word in wordcount: 
      wordcount[word] += 1 

print(wordcount) 

Ausgang:

{'bananna': 1, 'apple': 2, 'orange': 2}

+0

Ok, ich probiere das aus! – HelloWorld4382

+0

Nun, das funktioniert ein bisschen besser als das, was ich hatte. aber druckt stattdessen, dass alle Schlüsselwörter, die ich suche = 0 .... Ich habe ungefähr 100 Linien der Datei, die ich überprüfe, die Schlüsselwörter enthalten, und einige von ihnen tun, aber alle von ihnen sagen 0 – HelloWorld4382

+0

Entschuldigung tat ich nicht Verstehst du deinen Kommentar? !!! Können Sie bitte erklären – Serjik

0

Auf der Grundlage Ihrer Frage Ich werde Sie haben zwei Dateien zu übernehmen. Die erste Datei enthält die Wörter, nach denen Sie suchen möchten, getrennt durch eine neue Zeile. Die zweite Datei enthält etwas Text.

Datei 1: (words.txt)

dog 
cat 
went 

File 2: (story.txt)

Today my cat and dog ran out of my backyard. 
This is not the first time my dog has ran away. 
Last time he went to the dog park and then went to my neighbors house. 

Zuerst in der ein Wörterbuch enthält jedes der Schlüsselworte erstellen möchte, words.txt Datei. Sie würden den Wert davon so oft machen, wie er in der zweiten Datei gesehen wurde.

wordDB = { 'dog': 0, 'cat': 0, 'went' : 0} 

Um dies zu tun, dynamisch würden Sie zuerst ein leeres Wörterbuch erstellen und dann die Schleife der Zeilen in der words.txt Datei.

wordDB = {} 
wordFile = open('words.txt','r') 
for line in wordFile.readlines(): 
    word = line.replace('\n','') #This replaces the new line character 
    if not(word in wordDB.keys()): #Checks that the word doesn't already exist. 
     wordDB[word] = 0 # Adds the word to the DB. 
wordFile.close() 

Jetzt müssen wir die zweite Datei öffnen und Schleife über jede Zeile in dieser Datei. Für jede Zeile in dieser Datei werden wir jeden Schlüssel in der WordDB überprüfen und wenn er existiert, seine Zählung erhöhen.

storyFile = open('story.txt','r') 
checkWordList = wordDB.keys() 
for line in storyFile.readlines(): 
    wordList = line.replace('\n','').split(' ') 
    for eachWord in checkWordList: 
     if eachWord in wordList: 
      wordDB[eachWord] = (wordDB[eachWord] + wordList.count(eachWord)) 

storyFile.close() 

Jetzt müssen Sie nur noch einmal die checkWordList durchlaufen und den Wert aus dem WordDB ausdrucken.

for eachWord in checkWordList: 
    print "%s : %s" % (eachWord, wordDB[eachWord]) 

Sie die Ausgabe erhalten würden:

went: 2 
dog: 3 
cat: 1 
+0

Ich bekomme das: AttributeError: 'Set' Objekt hat kein Attribut 'Schlüssel' Allerdings habe ich mehrere Zeilen in der "story.txt" -Datei und für jedes like, muss ich überprüfen, ob Die Schlüsselwörter sind drin. und wenn es das tut, fügt es es zu einer Summe hinzu. So wie wenn eine der Zeilen 4 Schlüsselwörter hat, dann ist die Summe für diese Zeile .. 4. und wenn eine andere Zeile 5 hat dann ist die Summe für diese Zeile 5. – HelloWorld4382

+0

Ich habe jetzt seit zwei Wochen daran gearbeitet, aber nichts ist Arbeiten und es ist wirklich stressig – HelloWorld4382

+0

?? Hallo, kannst du bitte helfen? – HelloWorld4382

Verwandte Themen