Analizador de Texto - Programas Python
Introducción:
Hola amigos de Internet, les doy la bienvenida a Mi Diario Python, el mejor blog para Aprender Python.
En este articulo realizaremos un programa para analizar texto. El objetivo de este articulo es fortalecer nuestros conocimientos de programación y ejercitar nuestra lógica. ¿Que opinas?
Analizador de Texto con Python:
El proyecto consiste en lo siguiente: un analizador de archivos que analiza el texto y que nos permitirán saber que porcentaje de texto ocupa cada carácter.
Comencemos por el principio. Escribiremos una función para poder abrir los archivos de texto.
def open_file(name): # Abrimos el archivo con 'open' with open(name) as archivo: # Leemos el archivo y hacemos que la función lo retorne return archivo.read() # Probamos la función open_file('archivo.txt')
'Hola Amigos'
Muy bien, excelente. Ahora que podemos abrir los archivos y leer su contenido, podemos empezar con el análisis:
Como mencionamos anteriormente, queremos que el analizador nos diga el porcentaje de texto que ocupa un carácter determinado.
Para ello necesitamos saber cuantas veces aparece un carácter. Para ello escribiremos la siguiente función:
def count_char(texto, caracter): # Inicializamos el contador (resultado final) count = 0 # Recorremos todo el texto for a in texto: # en cada iteración comprobamos los caracteres if a == caracter: # Si hay coincidencia, el contador aumenta count = count + 1 return count # Probamos la función texto = open_file("archivo.txt") # Saber cuantas veces se repita el caracter 'o' print(count_char(texto, 'o'))
2
Excelente, muy bien, lo hemos hecho bien hasta ahora.
Ahora nos queda un ultimo paso, saber cuanto es el porcentaje en el que el carácter ocupa en el texto:
def porcentaje_char(texto): # Creamos una lista con todo el abecedario abc = 'abcdefghijklmnñopqrstuvwxyz' # Recorremos la lista "abc" for a in abc: # Calculamos el pocentaje porcentaje = 100 * count_char(texto,a) / len(texto) # Formula = 100 * num_char_in_text / len_text # Mostramos los resultados print("{0}-{1}%".format(a,round(porcentaje, 2))) # Probamos la función texto = open_file('archivo.txt') porcentaje_char(texto)
a-9.03% b-4.52% c-3.23% d-8.39% e-0.65% f-3.87% g-0.0% h-1.94% i-3.87% j-3.23% k-3.87% l-3.23% m-3.23% n-12.26% ñ-0.0% o-6.45% p-1.29% q-0.0% r-1.29% s-9.68% t-1.94% u-3.23% v-5.81% w-0.0% x-0.0% y-1.29% z-0.0%
Muy bien, perfecto. He cambiado el contenido de mi archivo de "Hola amigo", a una serie de caracteres. Por ello vemos que la "n" es la predominante en este nuevo texto.
Lo que haremos ahora sera reunir todas estas funciones en un archivo, para crear un software funcional:
# Analizador de texto def open_file(name): # Abrimos el archivo con 'open' with open(name) as archivo: # Leemos el archivo y hacemos que la función lo retorne return archivo.read() def count_char(texto, caracter): # Inicializamos el contador (resultado final) count = 0 # Recorremos todo el texto for a in texto: # en cada iteración comprobamos los caracteres if a == caracter: # Si hay coincidencia, el contador aumenta count = count + 1 return count def porcentaje_char(texto): # Creamos una lista con todo el abecedario abc = 'abcdefghijklmnñopqrstuvwxyz' # Recorremos la lista "abc" for a in abc: # Calculamos el pocentaje porcentaje = 100 * count_char(texto,a) / len(texto) # Formula = 100 * num_char_in_text / len_text # Mostramos los resultados print("{0}-{1}%".format(a,round(porcentaje, 2))) archivo = input("Introduzca la ruta del archivo: ") resultado = porcentaje_char(archivo) print(resultado)
Introduzca la ruta del archivo: archivo.txt
a-9.03% b-4.52% c-3.23% d-8.39% e-0.65% f-3.87% g-0.0% h-1.94% i-3.87% j-3.23% k-3.87% l-3.23% m-3.23% n-12.26% ñ-0.0% o-6.45% p-1.29% q-0.0% r-1.29% s-9.68% t-1.94% u-3.23% v-5.81% w-0.0% x-0.0% y-1.29% z-0.0%
Muy bien. ¿Que opinas?
Puedes descargar el código del programa, ingresando al siguiente enlace:https://gist.github.com/LuisAlejandroSalcedo/e51e769a6e075ff8b3f9c8f847ff0f13.
¿Alguna duda? No dudes en dejar tu comentario.
Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.
-
-
Hola Sebastien. Que grandiosa idea!!! Muchas gracias por tu aporte. Saludos :D.
-
-
Saludos. Excelente aporte.
-
Este comentario ha sido eliminado por el autor.
-
Muy bueno Luis... Pero hace tiempo que no vemos novedades, que sucede..?? Estamos pendiente de lo que propones, es de mucha ayuda, gracias y espero sigas bien..!!!
Saludos desde Salta, Argentina..!!
Deja una respuesta
Felicidades, siempre sigo tu artículo, también lo hago para aprender español (soy italiano). Aquí, sin embargo, para cada letra que tenga que volver a leer todo el archivo, sería bueno leerlo una vez y cargar las sumas a un array o dict.