¿A qué hora se enviaron los correos?
Descripción
Para probar el programa puedes usar los archivos:
Este programa cuenta la distribución de la hora del día para cada uno de los mensajes.
Para hacer esto busca las líneas que comienzan con “From” (ignorando las que empiezan con “From:”, es decir que tienen el símbolo : después de “From”), la hora en la que se envió el correo es el penúltimo elemento de cada línea.
Línea de ejemplo:
From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008
Puedes dividir la cadena de la hora en partes utilizando el carácter :
. Una vez que hayas acumulado las cuentas para cada hora, imprime las cuentas, una por línea, ordenadas por hora tal como se muestra debajo.
Ejemplo de ejecución
python timeofday.py
Ingresa un nombre de archivo: mbox-short.txt
04 3
06 1
07 1
09 2
10 3
11 6
14 1
15 2
16 4
17 2
18 1
19 1
Solución
Mostrar solución
horas_correos = {}
nombre_archivo = input('Ingresa un nombre de archivo: ')
with open(nombre_archivo, 'r') as archivo:
for linea in archivo:
if linea.startswith('From '):
cadena_hora = linea.split(' ')[-2]
partes_cadena = cadena_hora.split(':')
hora = partes_cadena[0]
horas_correos[hora] = horas_correos.get(hora, 0) + 1
lista_horas = list(horas_correos.items())
lista_horas.sort()
for horas, cantidad in lista_horas:
print(horas, cantidad)
Fuente del ejercicio: https://es.py4e.com/html3/10-tuples