es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
Tags:  , ,

Answer

  1. Avatar for 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 es split_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 lista loginTime.

    Aquí tienes un ejemplo de cómo hacerlo:

    for lineOne in nasa:
        split_data = lineOne.split(" ")
        dns.append(split_data[0])
        if len(split_data) >= 4:
            loginTime.append(split_data[3])
    

    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.

Comments are closed.