Google+ Seguidores

sábado, 6 de octubre de 2018

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.

2 comentarios :
Write comentarios
  1. 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.

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

      Eliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Powered by Blogger .