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}')
Fuente del ejercicio: https://es.py4e.com/html3/08-lists