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?
Imagen relacionada

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.
  1. Sebastien dice:

    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.

    1. Luis Salcedo dice:

      Hola Sebastien. Que grandiosa idea!!! Muchas gracias por tu aporte. Saludos :D.

  2. Unknown dice:

    Saludos. Excelente aporte.

  3. Unknown dice:

    Este comentario ha sido eliminado por el autor.

  4. Unknown dice:

    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

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Te has suscrito correctamente al boletín

Se produjo un error al intentar enviar tu solicitud. Inténtalo de nuevo.

Mi Diario Python will use the information you provide on this form to be in touch with you and to provide updates and marketing.