[Python-es] Busqueda cadenas NO coincidentes

Arnau Sanchez pyarnau en gmail.com
Mar Mar 23 15:37:03 CET 2010


On 23/03/10 14:45, Manuel Enrique González Ramírez wrote:

> Lo que necesito que haga mi programa es:
> 1. Leer linea a linea archivo1.txt
> 2. Cada vez que se lea una línea de archivo1.txt busque si esa palabra
> se encuentra en archivo2.xml
> 3. Si la palabra NO se encuentra en archivo2.xml se debe crear un
> archivo nuevo (diferencias.txt) que agregue esa palabra que no encontro
> en archivo2.xml.  Si el archivo diferencias.tx ya existe entonces que
> agregue una linea nueva al archivo diferencias.txt con la palabra en
> cuestion.

Python sería un lenguaje "de scripting" muy, muy triste, si para conseguir esto 
necesitáramos tal cantidad de código. Sin cubrir quizá todos los detalles, 
podrías partir de algo así:

output = (line for line in open("archivo1.txt")
           if line.strip() not in open("archivo2.xml").read())
open("diferencias.txt", "a+").writelines(output)

Por cierto, añadir datos a archivos (operación no idempotente) suele ser una 
mala idea, yo usaría el modo "w" y si hay diferentes fuentes las uniría después.

Conceptualmente no sé si tiene mucho sentido mirar si una palabra está o no en 
un formato estructurado como XML, pero bueno, supongo que eso ya lo tienes 
controlado.



Más información sobre la lista de distribución Python-es