Wie vergleicht man ein Wort aus einer Textdatei mit einem anderen Wort?

Wie vergleicht man ein Wort aus einer Textdatei mit einem anderen Wort?
with open("file.txt") as f:
     for line in f:
         for word in f:
             if word == 'President':
                print('a')

Dies druckt nichts, obwohl das Wort „Präsident“ viermal in der Textdatei vorkommt. Wie kann ich das überprüfen lassen?

Meine Textdatei sieht folgendermaßen aus:

President Kacey Genicke

President Alexandra Twomey

President Aldous Graddell

President Bernie Jenicek

Officer Cyrill Vernazza

Officer Sutton Spier

Officer Isabella Seer

Officer Abbey Holdforth

Faculty Officer Lennie Lomaz

Faculty Officer Brant Howle

Faculty Officer Dionysus Summerbell

Faculty Officer Calhoun Duguid

Faculty Officer Tremain Arnaez

Faculty Officer Mirabella Trathan

Faculty Officer Dex Darcy

Meine Ausgabe soll folgendermaßen aussehen:

   Kacey Genicke

   Alexandra Twomey

   Aldous Graddell

   Bernie Jenicek

Ich habe Folgendes versucht:

with open("file.txt") as f:
    for line in f:
            if 'President' in line:
                print(line[10])

Dadurch erhalte ich den Anfangsbuchstaben jedes Präsidenten.

Antwort1

Die innere for word in f:Schleifenichtiterieren über"Wörter"in einer Zeile, tut aber dasselbe wie for line in f- Zeilen von Datei verbrauchenf.

Um zu prüfen, ob 'President'ein Wort in einer Zeile enthalten ist, müssen Sie nur Folgendes tun:

with open("file.txt") as f:
     for line in f:
         if 'President' in line:
             print('a')

So drucken Sie nur die Zeilen, die mit Presidenteinem Wort beginnen, bei dem das Präfix entfernt wurde:

with open("file.txt") as f:
     for line in f:
         if line.startswith('President'):
             print(line.replace('President', '').strip())

Antwort2

Zunächst einmal glaube ich, dass es an Ihrer Einrückung liegt. Sie können Folgendes versuchen:

with open('file.txt') as f:
    count = 0 
    for line in f:
        columns = line.split() 
        if len(columns) > 1 and 'President' in line:  
            print(columns[1], columns[2])
            count += 1
    print("There are ", count, "Presidents found")

Dies sollte die gesamte Zeile drucken, wenn Presidentsie in dieser bestimmten Zeile gefunden wird. Wir werden dann die Zeile in Spalten aufteilen und die Spalten entsprechend drucken

In solchen Fällen ist die Verwendung jedoch awkmöglicherweise besser geeignet als Python.

awk '/President/{c++; print $2,$3 } END { printf("There were %d Presidents found\n", c)}' file.txt 
  • Suche nach Präsident
  • Erhöhen Sie den Zähler c.
  • Zweite und dritte Spalte drucken
  • ENDE. Alle gefundenen Vorkommen ausdrucken.

verwandte Informationen