Si trabajas con archivos CSV y usas el módulos csv de Python podrías hacer tu trabajo un poco mas facil.
Trabajar con archivos CSV en Python probablemente no seria tan fácil. Por ejemplo, si tienes un archivo CSV que contiene 3 columnas "A", "B" y "C D".
$ cat prueba.csv
A,B,"C D"
1,2,"3 4"
5,6,7
El siguiente programa en Python lee y muestra su contenido:
import csv
ifile = open('prueba.csv', "rb")
reader = csv.reader(ifile)
rownum = 0
for row in reader:
# Save header row.
if rownum == 0:
header = row
else:
colnum = 0
for col in row:
print '%-8s: %s' % (header[colnum], col)
colnum += 1
rownum += 1
ifile.close()
El cual muestra lo siguiente:
$ python csv1.py
A : 1
B : 2
C D : 3 4
A : 5
B : 6
C D : 7
Ademas, el modulo csv provee un objecto para escribir archivos CSV. El siguiente programa Python convierte el archivo prueba CSV en un archivo CSV que usa tabs como separador de valores y tiene todo los valores entre comillas. El carácter delimitador y la comillas, están especificados cuando el escritor es creado. La misma opcion esta disponible cuando se crea el objecto lector.
import csv
ifile = open('prueba.csv', "rb")
reader = csv.reader(ifile)
ofile = open('ttest.csv', "wb")
writer = csv.writer(ofile, delimiter='\t', quotechar='"', quoting=csv.QUOTE_ALL)
for row in reader:
writer.writerow(row)
ifile.close()
ofile.close()
Al ejecutarlo muestra lo siguiente:
$ python csv2.py
$ cat ttest.csv
"A" "B" "C D"
"1" "2" "3 4"
"5" "6" "7"
El siguiente ejemplo muestra como escribir una función para tratar de determinar que formato de archivo CSV es antes de abrirlo, así se puede lidiar con comas y tabs y diferentes tipos de comillas.
Fuente.
import os
import sys
import csv
def opencsv(filename):
tfile = open(filename, "r")
line = tfile.readline()
tfile.close()
if line[0] == '"':
quote_char = '"'
quote_opt = csv.QUOTE_ALL
elif line[0] == "'":
quote_char = "'"
quote_opt = csv.QUOTE_ALL
else:
quote_char = '"'
quote_opt = csv.QUOTE_MINIMAL
if line.find('\t') != -1:
delim_char = '\t'
else:
delim_char = ','
tfile = open(filename, "rb")
reader = csv.reader(tfile, delimiter=delim_char, quotechar=quote_char, quoting=quote_opt)
return (tfile, reader)
1 comentario:
Lo de poner el fondo de tu blog en negro, se carga el contenido. No se ve el script
Publicar un comentario