[Python-es] Busqueda cadenas NO coincidentes

Manuel Enrique González Ramírez maengora en gmail.com
Mar Mar 23 14:45:48 CET 2010


Hola amig en s de la lista.

Tengo este pequeño inconveniente.

Tengo dos archivos (archivo1.txt y archivo2.xml).  Archivo1 contiene una
lista de datos en la siguiente forma:

primerdato
segundodato
tercerdato
.
.
.
etc


Archivo2.txt es un archivo en formato XML que tiene la estructura propia de
un archivo de este tipo, completamente diferente al archivo1.txt

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.

Lo que tengo:
Tengo un prototipo que inicialmente me funciono con dos archivos de texto
pequeño (en pruebas) y misma estructura, pero al ponerlo en producción este
no me funciona de la forma deseada ya que me copia todos los registros que
contiene el archivo1.txt.

Este es el codigo para aquel/aquella que me pueda colaborar,  y de una vez
MuuuuChassss Gracias

#-*- coding: cp1252 -*-
"""Abro el primer archivo para
leer la cantidad de líneas
que posee """
f1 = open("archivo1.txt","r")
a = 0
for i in f1.readlines():
    a += 1
cantidad = a
f1.close()


contador = 0
while contador <= cantidad:
    #Abro el primer archivo para la lectura
    f1 = open("archivo1.txt","r")
    for linea in f1:
    #Evito que se muestren los saltos de línea
    if linea[-1]=='\n':
            linea = linea[:-1]
    buscar = linea #Asigno cada línea a la variable buscar

    #Abro el segundo archivo donde se buscará la variable
    f2 = open("archivo2.xml","r")
        archivo2 = f2.read() #Leo Completamente el archivo
    #Lee la variable y la busca
    if archivo2.find(buscar)>=0:
        print buscar+' OK '
    else:
        f3 = open("diferencias.txt","a")
            f3.write(buscar+"\n") #Si no encuentra la variable pone Fail
        f3.close()#Cierro el archivo que se crea

    contador += 1

f2.close() #Cierro el archivo donde se busca
f1.close() #Cierro el archivo que contiene las variables a buscar

print "Fin de la busqueda"

-- 
Manuel Enrique González Ramírez
http://maengora.blogspot.com
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20100323/e7a115b3/attachment.html>


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