Frecuencia de Letras de Archivos


Descripción

Para probar el programa puedes usar los archivos:

Escribe un programa que lee un archivo e imprime las letras en order decreciente de frecuencia

El programa debe convertir todas las entradas a minúsculas y contar solamente las letras a-z. El programa no debe contar espacios, dígitos, signos de puntuación, o cualquier cosa que no sean las letras a-z.

Encuentra ejemplos de texto en idiomas diferentes, y observa cómo la frecuencia de letras es diferente en cada idioma. Compara tus resultados con las tablas de los siguientes artículos de wikipedia:

Ejemplo de ejecución

Ingresa un nombre de archivo: mbox-short.txt
e: 5436
a: 5223
i: 4494
o: 4174
r: 4064
t: 4050
s: 3738
u: 3123
c: 3088
n: 2575
p: 2497
m: 2436
d: 2004
l: 1832
h: 1392
f: 1257
k: 1167
b: 1134
g: 1027
v: 997
j: 959
y: 643
w: 586
x: 482
z: 78
q: 57

Solución

Mostrar solución
frecuencia_letras = {}

nombre_archivo = input('Ingresa un nombre de archivo: ')
with open(nombre_archivo, 'r') as archivo:
  for linea in archivo:
    for caracter in linea:
      if caracter.isalpha():
        caracter = caracter.lower()
        frecuencia_letras[caracter] = frecuencia_letras.get(caracter, 0) + 1

cantidades_letras = []
for caracter, frecuencia in frecuencia_letras.items():
  cantidades_letras.append((frecuencia, caracter))
cantidades_letras.sort(reverse=True)

for frecuencia, caracter in cantidades_letras:
  print(f'{caracter}: {frecuencia}')

Probar solución en Google Colab

Fuente del ejercicio: https://es.py4e.com/html3/08-lists