Diferencia entre revisiones de «Usuario:Lmorillas/modulo programacion/python/csv»
De WikiEducator
(Página creada con '=== Ficheros CSV === La información de una hoja de cálculo se puede exportar/importar desde un fichero [http://es.wikipedia.org/wiki/CSV csv]. Python tiene soporte para tratar…') |
|||
(Una revisión intermedia por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
− | + | {{DISPLAYTITLE:Ficheros CSV}} | |
+ | |||
+ | == Ficheros CSV == | ||
La información de una hoja de cálculo se puede exportar/importar desde un fichero [http://es.wikipedia.org/wiki/CSV csv]. Python tiene soporte para tratar ficheros csv. | La información de una hoja de cálculo se puede exportar/importar desde un fichero [http://es.wikipedia.org/wiki/CSV csv]. Python tiene soporte para tratar ficheros csv. | ||
Un fichero csv es un fichero de texto. | Un fichero csv es un fichero de texto. | ||
Línea 6: | Línea 8: | ||
<!-- http://www.bde.es/webbde/es/estadis/infoest/htmls/recomendaciones.html --> | <!-- http://www.bde.es/webbde/es/estadis/infoest/htmls/recomendaciones.html --> | ||
− | + | == Lectura == | |
<source lang="python"> | <source lang="python"> | ||
import csv | import csv | ||
Línea 22: | Línea 24: | ||
</source> | </source> | ||
− | + | == Escritura== | |
<source lang="python"> | <source lang="python"> | ||
with open('codigo_ascii.txt', 'w') as fout: | with open('codigo_ascii.txt', 'w') as fout: | ||
Línea 30: | Línea 32: | ||
writer.writerow((chr(ascii_a+n), ascii_a + n)) | writer.writerow((chr(ascii_a+n), ascii_a + n)) | ||
</source> | </source> | ||
− | + | == Quoting == | |
writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC) | writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC) | ||
− | + | == Dialectos == | |
>>> csv.list_dialects() | >>> csv.list_dialects() | ||
['excel-tab', 'excel'] | ['excel-tab', 'excel'] | ||
Línea 38: | Línea 40: | ||
Se pueden crear dialectos: | Se pueden crear dialectos: | ||
csv.register_dialect(nombre, delimiter="|") | csv.register_dialect(nombre, delimiter="|") | ||
− | + | == Usando nombres de campos == | |
<source lang="python"> | <source lang="python"> | ||
with open('zaragoza_2010_10.csv') as fin: | with open('zaragoza_2010_10.csv') as fin: | ||
Línea 45: | Línea 47: | ||
reader = csv.DictReader(fin, delimiter=";") | reader = csv.DictReader(fin, delimiter=";") | ||
</source> | </source> | ||
+ | |||
+ | {{/ejercicio cvs euskadi}} |
Última revisión de 22:13 2 dic 2011
Contenido
Ficheros CSV
La información de una hoja de cálculo se puede exportar/importar desde un fichero csv. Python tiene soporte para tratar ficheros csv. Un fichero csv es un fichero de texto.
Lectura
import csv with open('zaragoza_2010_10.csv') as fin: reader = csv.reader(fin, delimiter=";") for fila in reader: print fila
['Países', 'HOMBRES', 'MUJERES', 'TOTAL'] ['Rumania', '16704', '14487', '31191'] ['Ecuador', '5612', '5713', '11325'] ['Marruecos', '5042', '3007', '8049']
Escritura
with open('codigo_ascii.txt', 'w') as fout: writer = csv.writer(fout) ascii_a = ord('a') for n in range(26): writer.writerow((chr(ascii_a+n), ascii_a + n))
Quoting
writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)
Dialectos
>>> csv.list_dialects() ['excel-tab', 'excel']
Se pueden crear dialectos:
csv.register_dialect(nombre, delimiter="|")
Usando nombres de campos
with open('zaragoza_2010_10.csv') as fin: # cuidado, toma la primera fila como títulos # usad parámetro fieldnames si no reader = csv.DictReader(fin, delimiter=";")
Ejercicio con fichero csv de opendata euskadi
Usa los datos del fichero csv de http://opendata.euskadi.net/w79-contgen/es/contenidos/ds_general/sueldos_altos_cargos_2011/es_sueldos/altos_cargos_asesores.html Crea un programa que:
|
Tip:
Los ficheros tienen caracteres codificados y pueden dar problemas si no se codifican bien. Una buena práctica es trabajar con unicode, como muestra en este ejemplo.
# Siguiendo nuestro ejemplo: import urllib2 url = 'http://opendata.euskadi.net/w79-contgen/es/contenidos/ds_general/sueldos_altos_cargos_2011/es_sueldos/contenidos/ds_general/sueldos_altos_cargos_2011/es_sueldos/adjuntos/sueldos_2011.csv' req = urllib2.urlopen(url) content = req.read() # extraer el encoding de la cabecera encoding=req.headers['content-type'].split('charset=')[-1] # convertir a unidoce, usando el encoding apropiado ucontent = unicode(content, encoding)