¿Cómo comparar una palabra de un archivo de texto con otra palabra?

¿Cómo comparar una palabra de un archivo de texto con otra palabra?
with open("file.txt") as f:
     for line in f:
         for word in f:
             if word == 'President':
                print('a')

Esto no imprime nada a pesar de que tengo la palabra "presidente" 4 veces en el archivo de texto. ¿Cómo puedo hacer para comprobarlo?

Mi archivo de texto se ve así:

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

Quiero que mi salida se vea así:

   Kacey Genicke

   Alexandra Twomey

   Aldous Graddell

   Bernie Jenicek

Intenté hacer esto:

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

Esto me da la primera letra de cada presidente.

Respuesta1

El bucle interior for word in f:hacenoiterar sobre"palabras"en una línea, pero hace lo mismo que for line in fconsumir líneas de archivof.

Para comprobar si 'President'la palabra está contenida dentro de una línea, todo lo que necesita es:

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

Para imprimir solo líneas que comienzan con Presidentuna palabra con prefijo eliminado:

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

Respuesta2

En primer lugar, creo que es tu sangría. Puedes probar lo siguiente:

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")

Esto debería imprimir la línea completa si Presidentse encuentra en esa línea en particular. Luego dividiremos la línea en columnas e imprimiremos las columnas en consecuencia.

Sin embargo, para tales casos, usar awkpodría ser mucho más apropiado que Python.

awk '/President/{c++; print $2,$3 } END { printf("There were %d Presidents found\n", c)}' file.txt 
  • Búsqueda de presidente
  • Incrementar el contador c.
  • Imprimir segunda y tercera columna
  • FIN. Imprime el total de ocurrencias encontradas.

información relacionada