Leyendo cada columna del archivo csv

Quiero leer cada columna de un archivo csv y hacer algunas modificaciones antes de almacenarlas en la tabla.

Tengo un archivo csv como:

"1";"testOne";"ValueOne" "2";"testTwo";"ValueTwo" "3";"testThree";"ValueThree" 

Aquí quiero leer el primer valor “1” y luego almacenarlo en algún lugar de forma variable y hacer algo con este valor, y de manera similar con los otros. Sin embargo, actualmente puedo leer el archivo completo, pero no puedo encontrar la forma de acceder a columnas individuales seguidas.

Gracias.

Python tiene un módulo csv incorporado.

 import csv with open('some.csv', 'rb') as f: reader = csv.reader(f, delimiter=';') for row in reader: print row[0] 

La respuesta en la parte superior es flexible y pythonic, pero si quisiera algo un poco más compacto y elegante para recuperar columnas enteras a la vez de datos delimitados (que caben cómodamente en la memoria), también podría intentar esto:

 c_reader = csv.reader(open('test.csv', 'r'), delimiter=';') # say you want the second column, only... col_2 = list(zip(*c_reader))[1] # keeping in mind that python is 0-indexed # or if you want to come back for more later on, you can just do... columns = list(zip(*c_reader)) 

Un poco más tradicionalmente python que el sentimiento anterior pero aún funcional sería:

 # just using a good old list comprehension col_2 = [x[1] for x in c_reader] # you could also get all the rows simply in this way rows = [x for x in c_reader] row_2 = rows[1] 

¡Ahora avanza y sé uno con los iterables! 😉

Podrías usar el modulo csv python:

 class csv.DictReader(csvfile[, fieldnames=None[, restkey=None[, restval=None[, dialect='excel'[, *args, **kwds]]]]]) 

Cree un objeto que funcione como un lector normal, pero asigne la información leída a un dictado cuyas claves están dadas por el parámetro opcional de nombres de campo. Si se omite el parámetro fieldnames, los valores en la primera fila del archivo csv se usarán como nombres de campo. Si la lectura de la fila tiene más campos que la secuencia de nombres de campo, los datos restantes se agregan como una secuencia codificada por el valor de restkey. Si la lectura de la fila tiene menos campos que la secuencia de los nombres de campo, las claves restantes toman el valor del parámetro opcional de intervalo de descanso. Cualquier otro argumento opcional o de palabra clave se pasa a la instancia del lector subyacente.