Python: filtra las líneas de un archivo de texto que contiene una palabra en particular

En Python, quiero escribir un progtwig que filtre las líneas de mi archivo de texto que contiene la palabra “manzana” y escriba esas líneas en un nuevo archivo de texto. Lo que he intentado simplemente escribe la palabra “manzana” en mi nuevo archivo de texto, mientras que quiero líneas completas. Soy un principiante en Python, así que responda a mi pregunta, ya que realmente necesito esto.

El uso puede obtener todas las líneas que contienen ‘apple’ usando una lista de comprensión:

[ line for line in open('textfile') if 'apple' in line] 

Entonces, también en una 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: definitivamente es más rápido mantenerlo como un iterador y escribir

 open('newfile','w').writelines(line for line in open('textfile') if 'apple' in line) 
 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)) 

Usando generadores, esto es memoria eficiente y rápida.

 def apple_finder(file): for line in file: if 'apple' in line: yield line source = open('forest','rb') apples = apple_finder(source) 

Me encantan las soluciones fáciles sin daño cerebral para la lectura 🙂

if "apple" in line: debería funcionar.

Para Python3 – aquí está trabajando y rápido ejemplo.

 with open('input.txt', 'rb') as file_in: with open("output.txt", "wb") as file_out: file_out.writelines(filter(lambda line: b'lines with this text' in line, file_in))