IndexError – Agregando dos veces a una lista
Estoy obteniendo un error para mi código de abajo. El tercer índice en mi archivo son los tiempos de un registro del servidor web. Quiero agregarlo a la lista vacía.
El segundo valor que intento agregar siempre obtiene este error, independientemente de la información que se utilice. ¿Algún consejo para solucionarlo?
Código:
nasa = open('NASA_access_log_Jul95')
import statistics
dns = []
loginTime = []
for lineOne in nasa:
split_data = lineOne.split(" ")
dns.append(split_data[0])
loginTime.append(split_data[3])
freq = statistics.mode(dns)
least = min(dns)
print(freq)
print(loginTime)
- Error exacto:
Traceback (most recent call last):
File "/Users/technomancer/PycharmProjects/Akhters_DATA_Parsing/main.py", line 12, in <module>
loginTime.append(split_data[3])
IndexError: el índice de la lista está fuera de rango
- Ejemplos de líneas para el archivo de texto de Nasa:
199.72.81.55 - - [01/Jul/1995:00:00:01 -0400] "GET /history/apollo/ HTTP/1.0" 200 6245
unicomp6.unicomp.net - - [01/Jul/1995:00:00:06 -0400] "GET /shuttle/countdown/ HTTP/1.0" 200 3985
199.120.110.21 - - [01/Jul/1995:00:00:09 -0400] "GET /shuttle/missions/sts-73/mission-sts-73.html HTTP/1.0" 200 4085
davy.ai
El mensaje de error “IndexError: list index out of range” sugiere que la función
split()
no puede dividir la línea de texto en suficientes elementos para acceder al tercer índice (que essplit_data[3]
). Esto podría deberse al hecho de que algunas líneas del archivo de texto no tienen 3 o más elementos después de dividir por espacios. Una forma de solucionar este error es agregar una comprobación antes de agregar el valor a la listaloginTime
.Aquí tienes un ejemplo de cómo hacerlo:
Este código verifica si la lista
split_data
tiene una longitud de al menos 4 (lo que significa que tiene al menos 4 elementos después de dividir por espacios) y solo agrega el cuarto elemento (que es la hora de inicio de sesión) si esa condición es cierta.