En Python, quiero escribir un programa que filtre las líneas de mi archivo de texto que contenga la palabra "manzana" y las escriba en un nuevo archivo de texto. Lo que he intentado solo escribe la palabra "manzana" en mi nuevo archivo de texto, mientras que quiero líneas enteras. Soy un principiante en Python, así que amablemente responda a mi pregunta, ya que realmente lo necesito.Python: filtrar líneas de un archivo de texto que contiene una palabra particular
Respuesta
uso puede conseguir todas las líneas que contenga 'manzana' usando una lista-comprensión:
[ line for line in open('textfile') if 'apple' in line]
Por lo tanto - también en una sola línea de código - puede crear el nuevo archivo de texto:
open('newfile','w').writelines([ line for line in open('textfile') if 'apple' in line])
Y EYQUEM tiene razón: es definitivamente más rápido para mantenerlo como un iterador y escribir
open('newfile','w').writelines(line for line in open('textfile') if 'apple' in line)
if "apple" in line:
Deberia trabajar.
from itertools import ifilter
with open('source.txt','rb') as f,open('new.txt','wb') as g:
g.writelines(ifilter(lambda line: 'apple' in line, f))
El uso de generadores, esta es la memoria eficiente y rápido
def apple_finder(file):
for line in file:
if 'apple' in line:
yield line
source = open('forest','rb')
apples = apple_finder(source)
Me encanta soluciones fáciles sin daño cerebral para la lectura :-)
La función ** apple_finder (archivo) ** es un generador de funciones y ** apples ** es un generador. Los últimos hacen el mismo trabajo que ** ifilter (línea lambda: 'apple' en línea, f) ** en dos líneas (importación comprendida) – eyquem
- 1. Eliminar líneas que contienen la palabra clave de un archivo
- 2. Higlight Palabra particular en vista de texto
- 3. C# archivo de texto de búsqueda, devuelva todas las líneas que contengan una palabra
- 4. Filtrar una NSArray que contiene objetos personalizados
- 5. Archivo de texto C# buscar palabra específica y eliminar toda la línea de texto que contiene esa palabra
- 6. Python cree que un archivo de texto de 3000 líneas tiene una línea de longitud?
- 7. palabra que contiene números
- 8. Cómo crear un combo box o un cuadro de texto de autocompletar para filtrar el texto que contiene una cadena
- 9. PHP: ¿Cuál es una forma eficiente de analizar un archivo de texto que contiene líneas muy largas?
- 10. Ruby regex "contiene una palabra"
- 11. ¿Busca un archivo de texto e imprime líneas relacionadas en Python?
- 12. Encontrar líneas en un archivo de texto que coincida con una expresión regular
- 13. Python ¿Abre un archivo de texto sin borrar todo lo que contiene?
- 14. python - Leer archivo desde y hacia líneas de texto específicas
- 15. Contar líneas, palabras y caracteres dentro de un archivo de texto usando Python
- 16. cómo reemplazar una línea particular en un archivo de texto usando php?
- 17. crear archivo de tamaño particular en python
- 18. Filtrar una palabra en una imagen src con jquery
- 19. Saltar primer par de líneas, mientras que las líneas de lectura en el archivo Python
- 20. caracteres de fin de línea de las líneas leen desde un archivo de texto, usando Python
- 21. Lea solo las primeras líneas de texto de un archivo
- 22. ¿Cómo obtengo LaTeX para guiones de una palabra que contiene un guion?
- 23. Filtra un archivo de texto en un nuevo archivo de texto
- 24. ¿Cómo saltar a una línea particular en un gran archivo de texto?
- 25. Eliminar líneas duplicadas del archivo de texto?
- 26. Texto en cursiva que contiene un enlace
- 27. ¿Cómo elimino las nuevas líneas de un archivo de texto?
- 28. contando el número de líneas en un archivo de texto
- 29. Leyendo un archivo de texto .txt en C que contiene float, separado por espacio
- 30. Eliminar n1 líneas anteriores y n2 líneas siguientes con respecto a una línea que contiene un patrón
Una lista por comprensión crea un objeto. Usar una expresión de generador sería mejor. Por cierto, se puede escribir '' writelines (línea para línea en abierto ('archivo de texto') si 'apple' en línea) '' – eyquem
@eyquem: Ok, estoy totalmente de acuerdo en que, para archivos grandes, debería ser es mejor utilizar generadores, ya que un generador se comporta de forma perezosa y, por lo tanto, no consume tanta memoria. Pero probablemente para archivos pequeños, la comprensión de la lista es la solución más rápida. – phynfo
@Phynfo: No ... guardar cosas como generadores/iteradores es mucho más eficiente. La lista de comprensión todavía está creando el iterador, que luego está llenando una lista, y una vez completa, pasa esa lista a writelines que la convierte de nuevo en un iterador. –