¿Cómo busco un archivo de texto para una frase clave o palabra clave y luego imprimo la línea en la que se encuentra la frase clave o la palabra clave?¿Busca un archivo de texto e imprime líneas relacionadas en Python?
Respuesta
searchfile = open("file.txt", "r")
for line in searchfile:
if "searchphrase" in line: print line
searchfile.close()
Para imprimir múltiples líneas (de una manera sencilla)
f = open("file.txt", "r")
searchlines = f.readlines()
f.close()
for i, line in enumerate(searchlines):
if "searchphrase" in line:
for l in searchlines[i:i+3]: print l,
print
La coma en print l,
evita espacios adicionales que no aparezcan en la salida; la instrucción de impresión final demarca los resultados de diferentes líneas.
O aún mejor (el robo de vuelta de Mark Ransom):
with open("file.txt", "r") as f:
searchlines = f.readlines()
for i, line in enumerate(searchlines):
if "searchphrase" in line:
for l in searchlines[i:i+3]: print l,
print
with open('file.txt', 'r') as searchfile:
for line in searchfile:
if 'searchphrase' in line:
print line
Con perdón de senderle quien descaradamente copiados.
+1. Estaba molesto, pero luego me tomé un momento para entender la declaración con. ¡Esto es genial! – senderle
@senderle, gracias por eso. Consideré simplemente editar tu respuesta, pero pensé que sería aún más molesto, y la declaración 'with' es una adición bastante reciente a Python, haciendo que tu respuesta sea la más apropiada para algunas personas. ¡Obtuviste mi +1 hace mucho tiempo! –
sí, una reciente y para mí, críptica, además, hasta ahora; Debo admitir que hace unas semanas me costaba asimilar el enunciado con el enunciado y había quedado en blanco, pero este simple ejemplo lo explica perfectamente. – senderle
Tenga en cuenta la posibilidad de un índice fuera de rango con "i + 3". Podría hacer algo como:
with open("file.txt", "r") as f:
searchlines = f.readlines()
j=len(searchlines)-1
for i, line in enumerate(searchlines):
if "searchphrase" in line:
k=min(i+3,j)
for l in searchlines[i:k]: print l,
print
Editar: tal vez no sea necesario. Acabo de probar algunos ejemplos. x [y] dará errores si y está fuera del rango, pero x [y: z] no parece dar errores para los valores fuera de rango de y y z.
Cortar no produce errores fuera de rango. Cuando tomas una porción, dices "dame una lista de los elementos en este rango". Si no hay elementos en el rango dado, entonces una lista vacía entrega lo que se solicitó. Por otro lado, la indexación dice "dame el ítem exacto en el índice 'i'". Si no hay ningún elemento en 'i', entonces devolver algo, incluso' None', sería una mentira, por lo que es mejor hacer una excepción. – senderle
- 1. Principiante en busca de código Python hermoso e instructivo
- 2. ¿Cómo encontrar N líneas más largas en un archivo de texto e imprimirlas en stdout?
- 3. python - Leer archivo desde y hacia líneas de texto específicas
- 4. echo "-e" no imprime nada
- 5. ¿Cómo leo líneas en un archivo de texto en OCaml?
- 6. quita los comentarios del archivo xml e imprime bastante
- 7. contando el número de líneas en un archivo de texto
- 8. C# ¿Cómo cuento las líneas en un archivo de texto
- 9. Dónde/cómo busca log4j un archivo log4j.properties?
- 10. Analizando un archivo de texto grande (20GB) con python - leyendo en 2 líneas como 1
- 11. Usando python para escribir líneas específicas de un archivo a otro archivo
- 12. Eliminar líneas duplicadas del archivo de texto?
- 13. Imprime la antigüedad del archivo en segundos usando Python
- 14. Agregar un texto al archivo en Python
- 15. caracteres de fin de línea de las líneas leen desde un archivo de texto, usando Python
- 16. ¿Cómo elimino las nuevas líneas de un archivo de texto?
- 17. Python cree que un archivo de texto de 3000 líneas tiene una línea de longitud?
- 18. Lea solo las primeras líneas de texto de un archivo
- 19. Python: filtrar líneas de un archivo de texto que contiene una palabra particular
- 20. Contar líneas, palabras y caracteres dentro de un archivo de texto usando Python
- 21. Escuchando en ButtonGroup para cambios "secundarios", e imprime el texto seleccionado de JRadioButton
- 22. python: leer líneas de archivos de texto comprimido
- 23. ¿Busca un archivo SQL-Dump sin importarlo en un DBMS?
- 24. Python 3.2 - readline() está salteando líneas en el archivo fuente
- 25. Contar el número de líneas en un archivo txt con Python excluyendo las líneas en blanco
- 26. Algoritmo para encontrar palabras relacionadas en un texto
- 27. MySQL busca y reemplaza un texto en un campo
- 28. Archivo por lotes para eliminar las primeras 3 líneas de un archivo de texto
- 29. Saltar primer par de líneas, mientras que las líneas de lectura en el archivo Python
- 30. python, matplotlib, svg e hipervínculos en etiquetas de texto
cerrar el archivo después del procesamiento. – Rozuur
¿Cómo imprimiría esa línea y otras tres líneas debajo? –
@Rozuur: suficiente. editado – senderle