Enunciado y solución de ejercicios resueltos en Python: expresiones regulares y acceso a ficheros. Se incluye la descarga del código fuente completo de los ejercicios en Python. El programa pedirá que se introduzca un nombre de usuario y buscará en un fichero (con una estructura concreta) todos los usuarios con ese nombre, de los que encuentre mostrará sus datos.
- Ejercicio resuelto Python 1: expresiones regulares y acceso a ficheros.
- Descarga del fichero Python con el ejercicio resuelto.
Ejercicio resuelto Python: expresiones regulares y acceso a ficheros
Enunciado del ejercicio Python
Realizar una aplicación Python que lea el contenido de un fichero de texto plano (con la estructura del creado en este ejercicio) y solicite al usuario que indique los primeros caracteres de un nombre. El programa devolverá todos los datos disponibles en el fichero de los usuarios que cuyo nombre contenga esos caracteres.
El texto introducido podrá comenzar tanto en minúsculas como en mayúsculas. En caso de no encontrar ninguna coincidencia, se mostrará un mensaje indicándolo.
Para la búsqueda y obtención de resultados en el fichero únicamente se pueden usar expresiones regulares. No se permite recorrer el fichero buscando línea a línea.
Por ejemplo, si el fichero contiene:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Nombre: Alonso Apellido1: Lozano Apellido2: Lucas Edad: 48 Nombre: Alfonso Apellido1: López Apellido2: Jiménez Edad: 51 Nombre: Ginés Apellido1: Gómez Apellido2: Fernández Edad: 29 Nombre: Alonso Apellido1: Oliva Apellido2: Gutiérrez Edad: 45 Nombre: Patricia Apellido1: Gomariz Apellido2: Pastor Edad: 39 |
Y el usuario introduce «alon», el programa debe devolver:
1 2 3 4 5 6 7 8 |
Nombre: Alonso Apellido1: Lozano Apellido2: Lucas Edad: 48 Nombre: Alonso Apellido1: Oliva Apellido2: Gutiérrez Edad: 45 |
Que son los dos usuarios del fichero (y sus datos) cuyo principio del nombre coincide con los caracteres introducidos por el usuario «alon».
Solución del ejercicio en Python
La solución propuesta al ejercicio 1, como ejemplo de uso de expresiones regulares y acceso a ficheros, podría ser:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import re fichero = "clientes.txt" # Pedimos el nombre a buscar al usuario nombre = input("Introduzca los primeros caracteres del nombre a buscar: ") # Leemos el contenido del fichero y lo guardamos en una variable with open(fichero, "r", encoding="utf-8") as fichero: contenido = fichero.read() fichero.close # Buscamos la coincidencia con expresiones regulares # Preparamos el patrón con el texto a buscar # Si lo encontramos, buscamos también las tres líneas siguientes (apellido1, apellido2 y edad) patron = r"Nombre:\W+\b%s\w+\b\n[^\r\n]+\n[^\r\n]+\n[^\r\n]+" % nombre # Usamos findall para buscar todas las coincidencias en todo el fichero # Con el flag re.IGNORECASE para que no tenga en cuenta mayúsculas/minúsculas resultado = re.findall(patron, contenido, re.IGNORECASE) if resultado != None and resultado != []: print("Los resultados obtenidos son los siguientes:") for linea in resultado: print(linea) else: print("No se han encontrado coincidencias") |
Ejemplo de ejecución del ejercicio en Python
La compilación del ejercicio 1, introduciendo los caracteres «alon»:
Introduzca los primeros caracteres del nombre a buscar: alon
El programa buscará todos los usuarios con el nombre introducido y mostrará el resultado:
1 2 3 4 5 6 7 8 9 |
Los resultados obtenidos son los siguientes: Nombre: Alonso Apellido1: Lozano Apellido2: Lucas Edad: 48 Nombre: Alonso Apellido1: Oliva Apellido2: Gutiérrez Edad: 45 |
Descarga del fichero Python con el ejercicio resuelto
En el siguiente enlace os proporcionamos la descarga del código fuente completo en Python con la solución del ejercicio propuesto: