
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 f
consumir 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 President
una 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 President
se 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 awk
podrí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.