2011-11-29 38 views
22

necesito para leer un archivo CSV que tiene campos que tienen una coma, por lo que he citado doble de los campos que contiene comas, por ejemplo:leer el archivo CSV con comas dentro de los campos en Python

1, "text1,text2", "text3, text4", a, b, c 

Pero cuando trato de leer el archivo en Python consigo los campos separados por comas los, de la siguiente manera:

row[0] = 1 
row[1] = text1 
row[2] = text2 
row[3] = text3 
row[4] = text4 
row[5] = a 
row[6] = b 
row[7] = c 

estoy leyendo el archivo CSV con el siguiente código:

info = csv.reader(open('./info.csv')) 
for row in info : 
    print row[0] + " * " + row[1] ... 

¿Es posible leer los campos con comillas dobles que contienen una coma?

Respuesta

30

El módulo Python csv realmente admite campos entre comillas, incluso de forma predeterminada. Su problema aquí es que Python por defecto no omite el espacio, por lo que necesita usar skipinitialspace=True. .

>>> s = StringIO.StringIO('1, "text1,text2", "text3, text4", a, b, c') 
>>> list(csv.reader(s, skipinitialspace=True)) 
[['1', 'text1,text2', 'text3, text4', 'a', 'b', 'c']] 
+5

'csv.Sniffer() sniff (s) .__ dict__' indicarían también: ' { '__doc__': Ninguno, '__module__': 'csv', '_name': 'olió ' 'delimitador':', ', 'comillas dobles': Falso , 'lineterminator': '\ r \ n', 'quotechar': '"', 'citando': 0, 'skipinitialspace' : True} ' – eumiro

Cuestiones relacionadas