[Python 3.5.2] Buscar dentro de un archivo de texto

Iniciado por Geormarsch, 17 Julio 2017, 05:20 AM

0 Miembros y 1 Visitante están viendo este tema.

Geormarsch

Hola buenas noches.
Estoy haciendo éste código que por el momento crea un archivo de texto con lineas que almacenan un RUT y un TALLER.

Lo que quiero que haga la opción 2, sería buscar dentro del archivo de texto que se crea y luego leerlo y ver si es que el RUT se repite más de 1 vez, lógicamente hablando si se repite sería porque está con otro TALLER guardado.


195194467 chile
197632782 peru
195194467 colombia


Es ahí donde la opción 2 debería tener una salida así.

>> 195194467 chile
>> 195194467 colombia

Por el momento al tipear en la opcion 2 y busca en el archivo, sólo imprime el primer RUT que encuentra, ya que ahí termina el ciclo for, no sé como hacer para ver si en el archivo de texto hay más de 1 rut asociado con diferente TALLER

Código (python) [Seleccionar]
#!usr/bin/python
#-*- coding: utf-8 -*-



def menu():
   
   print ("1 --- AGREGAR PERSONA")
   print ("2 --- BUSCAR RUT")
   print ("3 --- MOSTRAR BASE DE DATOS\n")
   
   
   opcion = int(input("OPCIÓN: "))
   
   if opcion == 1:
       print ("EL RUT DEBE SER INGRESADO SIN PUNTOS NI GUIÓN")
       x = 0
           
       while (x == 0):
           rut = input("RUT: ")
           taller = input("TALLER: ")
               
           escritura_datos = open('base_datos_talleres_laborales.txt', 'a')
           escritura_datos.write(rut)
           escritura_datos.write(" ")
           escritura_datos.write(str(taller + '\n'))
               
           continuar = str(input("CONTINUAR? (S/N): "))
           if continuar == "s" or continuar == "S":
               continue
           if continuar == "n" or continuar == "N":
               escritura_datos.close()
               menu()
       
   if opcion == 2:
       buscar_rut = input("RUT A BUSCAR: ")
       leer_bd = open('base_datos_talleres_laborales.txt', 'r')
       
       for x in leer_bd:
           if buscar_rut in x:
               print (x)
               
           else:
               print ("RUT NO REGISTRADO")
               break
           
       print ("PRESIONA UNA TECLA PARA IR AL MENU")
       tecla = input()
       menu()
       
   if opcion == 3:
       lectura = open('base_datos_talleres_laborales.txt', 'r')
       imprimir = lectura.read()
       print ('\n')
       print (imprimir)
       print ("PRESIONA UNA TECLA PARA IR AL MENU")
       tecla = input()
       menu()
       
   else:
       print ("OPCIÓN NO VÁLIDA")
       menu()
       

           

menu()
"Comentar el código es como limpiar el cuarto de baño; nadie quiere hacerlo, pero el resultado es siempre una experiencia más agradable para uno mismo y sus invitados"

ivancea96

Tienes un else en el if. Si uno d elso registros que recorre no es lo que quieres, va a dar como que no existe. Simplemente, quita el else.

Luego, al acabar el for, comprueba si has encontrado algún registro o no (por ejemplo, poniendo una variable inicializada a false a true cuando entre en el if). En caso de que no, muestras el mensaje de que no se ha encontrado.