
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 President
einem 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 President
sie 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 awk
mö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.