Comparar y extraer
Arnau Sanchez
pyarnau en gmail.com
Mar Jun 24 01:05:10 CEST 2008
Pepe Aracil escribió:
>> Te pongo una versión rápida de todo lo dicho:
>>
>> palabras=(w for w in file("fichero_1.txt"))
>> file("fichero_final","w").writelines( linea for linea in
>> file("fichero_2.txt") if any(w for w in palabras if w in linea))
>
>
> Creo que hay que añadir un strip() para quitar los "\n"
> y que la busqueda en el fichero_2 funcione.
>
> palabras=(w.strip() for w in file("fichero_1.txt"))
Correcto, pero además hay que crear una lista en vez de un generador, ya que
éste se agota a las primeras de cambio.
Se podría explorar otro camino usando expresiones regulares, es de esperar que
sea más rápido:
import re
words = ("%s\\b" % s.strip() for s in open("fichero_1.txt"))
wordsre = re.compile("|".join(words))
output = (line for line in open("fichero_2.txt") if wordsre.match(line))
Y otra forma más rápida, desde el terminal:
grep -w -f fichero_1.txt fichero_2.txt
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es