¿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)

Probar solución en Google Colab

Fuente del ejercicio: https://es.py4e.com/html3/10-tuples