En este post voy a resolver un ejercicio con Python. Dicho ejercicio dice así:
Usted esta trabajando con el equipo encargado de la integración de el nuevo CLI de un sistema operativo. En este momento usted se dedica a hacer pruebas para manipular archivos de texto, por lo que le asignan la siguiente tarea:
Debe realizar un programa que lea del usuario una palabra. Luego, vaya a buscar esta palabra en un archivo de texto llamado input.txt. En esta busqueda su programa debe hacer lo siguiente:
Contar cuantas ocurrencias de la palabra hay en el archivo de texto (despues de haber leido todo su contenido) y desplegar en pantalla esa cantidad.
Crear otro archivo llamado llamado result.txt, el cual contenga solamente las lineas en donde se encuentra la palabra buscada, desplegando al principio de la linea, su numero linea. Es decir que si fuera la primera linea, el numero es 1, si es la tercera el numero es 3, etc.
Ejemplo:input.txt
Este es un archivo de prueba, para
ver si nuestro buscador funciona
de no ser asi, tendremos que hacer
mas pruebas y decidir que hacer.
Palabra a buscar: de
Ocurrencias: 2result.txt
1 – Este es un archivo de prueba, para
3 – de no ser asi, tendremos que hacer
Básicamente se trata de recorrer el archivo, buscar las líneas en donde se encuentra la búsqueda y colocar los resultados (con el número de línea) en otro archivo.
Veamos cómo se soluciona.
Declaramos el título de ambos archivos. Vamos a leer los datos desde input.txt
y vamos a escribir los resultados en result.txt
Solicitamos al usuario la búsqueda a través de input. Después leemos el archivo y, si encontramos la búsqueda en el archivo, agregamos a un arreglo (con append
) el número de línea junto con la línea en cuestión.
Finalmente, con el arreglo antes mencionado, escribimos el archivo de salida. Por cierto, los datos de entrada para este ejemplo son:
Este es un archivo de prueba, para
ver si nuestro buscador funciona
de no ser asi, tendremos que hacer
mas pruebas y decidir que hacer.
Bien. Ahora que he explicado el algoritmo, veamos su codificación. El código fuente es el siguiente:
"""
____ _____ _ _ _
| _ \ | __ \ (_) | | |
| |_) |_ _ | |__) |_ _ _ __ _____| |__ _ _| |_ ___
| _ <| | | | | ___/ _` | '__|_ / | '_ \| | | | __/ _ \
| |_) | |_| | | | | (_| | | / /| | |_) | |_| | || __/
|____/ \__, | |_| \__,_|_| /___|_|_.__/ \__, |\__\___|
__/ | __/ |
|___/ |___/
Blog: https://parzibyte.me/blog
Ayuda: https://parzibyte.me/blog/contrataciones-ayuda/
Contacto: https://parzibyte.me/blog/contacto/
Copyright (c) 2020 Luis Cabrera Benito
Licenciado bajo la licencia MIT
El texto de arriba debe ser incluido en cualquier redistribución
"""
archivo = "input.txt"
salida = "result.txt"
busqueda = input("Ingresa búsqueda: ")
lineas_escribir = []
with open(archivo, "r") as archivo_lectura:
numero_linea = 0
for linea in archivo_lectura:
numero_linea += 1
linea = linea.rstrip()
separado = linea.split(" ")
if busqueda in separado:
lineas_escribir.append(str(numero_linea) + " - " + linea)
with open(salida, "w") as archivo_salida:
for linea in lineas_escribir:
archivo_salida.write(linea + "\n")
Al ejecutarlo y buscar, por ejemplo, la palabra “de” el resultado se guardará en result.txt y se verá así:
1 - Este es un archivo de prueba, para
3 - de no ser asi, tendremos que hacer
En caso de que te guste el lenguaje, te invito a ver más sobre Python en mi blog.
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…
Esta web usa cookies.
Ver comentarios
¿se puede hacer un buscador que encuentre palabras claves en más de un documento? o sea, ingresar la ruta donde están los libros y buscar entre carpetas y sub carpetas a la vez. suelo olvidar mucho a los autores, más no sus tramas.
Yo creo que sí es posible