Saltar al contenido

Tratando de entender python csv .next ()

Solución:

La fila del encabezado se “omite” como resultado de la llamada next(). Así es como funcionan los iteradores.

Cuando recorre un iterador, es next() se llama al método cada vez. Cada llamada avanza el iterador. Cuando el for El ciclo comienza, el iterador ya está en la segunda fila y continúa desde allí.

Aquí está la documentación sobre el next() método (aquí hay otra pieza).

Lo importante es que csv.reader los objetos son iteradores, al igual que el objeto de archivo devuelto por open(). Puede iterar sobre ellos, pero no contienen todas las líneas (o ninguna de las líneas) en un momento dado.

los csv.reader el objeto es un iterador. Un iterador es un objeto con un next() método que devolverá el siguiente valor disponible o aumentará StopIteration si no hay ningún valor disponible. los csv.reader devolverá valor línea por línea.

Los objetos iteradores son la forma en que Python implementa for círculo. Al comienzo del bucle, el __iter__ se llamará al objeto del objeto en bucle. Debe devolver un iterador. Entonces el next Se llamará al método de ese objeto y el valor se almacenará en la variable de bucle hasta que next método aumenta StopIteration excepción.

En su ejemplo, agregando una llamada a next antes de usar la variable en el for construcción de bucle, está eliminando el primer valor del flujo de valores devueltos por el iterador.

Puede ver el mismo efecto con iteradores más simples:

iterator = [0, 1, 2, 3, 4, 5].__iter__()
value = iterator.next()
for v in iterator:
    print v,
1 2 3 4 5
print value
0
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *