Buscando un poco seguro que podeis encontrar otras implementaciones. Está bien que la librería incorpore este manejo de archivos ya que es bastante común.
Una cosa interesante que tiene, son los dialectos. Veamoslo con un ejemplo:
>>> import csv
>>> csv.list_dialects()
['excel-tab', 'excel']
Como podeis ver, el módulo incorpora dos dialectos para escribir/leer csv's del agrado de excel. Y es que hay que decir que no hay un estandar sobre CSV.
El hecho de estar mirando esto es porque estoy implementando un reader y andaba pensando si reutilizar este... En principio estoy por la labor... Si hay algo implementado mejor reutilizarlo ¿no?.
Lo que si que necesito de todas todas es un recubrimiento...
En principio hay dos cosas que me llaman la atención:
- Si al consctructor del DictReader se le pasan los campos, si el fichero tiene cabecera, la lee como una línea normal ¡Ojo!. Si no se pasan los campos toma la primera linea como claves para el diccionario.
- El constructor es muy flexible en su uso, a la hora de pasarle los parámetros.
- El modulo tiene una clase para intentar deducir el formato de un csv: Sniffer.
#!/usr/bin/python
# -*- coding: iso-8859-1 -*-
import csv
import sys
class midialecto(csv.Dialect):
delimiter = 'þ'
quotechar = '"'
lineterminator = '\r\n'
doublequote = True
skipinitialspace = True
quoting = csv.QUOTE_MINIMAL
csv.register_dialect("midialecto", midialecto)
campos = ['campo1','campo2']
f = open("ejemplo.csv","r")
# A descomentar la que mas nos guste
#
#dr = csv.DictReader(f,campos,None,None,'midialecto')
#dr = csv.DictReader(f,dialect='midialecto',fieldnames=campos)
#dr = csv.DictReader(f,dialect='midialecto')
for row in dr:
print row.keys()
print row.values()
sys.exit()
En el anterior ejemplo (descomentar una de las lineas que crean el 'dr') se imprime la primera línea que se lee del fichero, y se aborta.
Con los 3 constructores podemos ver la flexibilidad en la construcción, y como se comporta ante la presencia del argumento 'fieldnames' (si no se pasa => la primera linea se usa para formar las claves del diccionario).
Los parámetros que definen el formateo, pueden pasarse incluso en un diccionario.
No hay comentarios:
Publicar un comentario