2. Eines per tractar fitxers CSV¶
Un fitxer en format Comma-Separated Values (CSV) conté dades
tabulades. Normalment, la primera línia del fitxer conté una capçalera
amb els noms de les columnes i la resta de línies contenen les dades
de cada columna. Tant els noms de les columnes a la capçalera com les
dades a cada una de les línies del fitxer estan separats per una coma
(,) o un altre caràcter separador.
L’objectiu de les dues funcions següents és calcular un diccionari a partir de la capçalera amb els noms de les columnes, una línia, el caràcter separador de les dades (columnes) de la línia i una altra informació que permeti seleccionar algunes de les columnes. Aquesta altra informació és una llista amb els noms de les columnes seleccionades en la primera funció i una llista de booleans en la segona.
Dissenya les funcions següents i desa-les al mòdul csv_utils
(fitxer csv_utils.py).
- csv_utils.linia_noms_cols_a_dic(capcalera, linia, separador, columnes)¶
Calcula un diccionari a partir d’una línia amb dades separades pel caràcter separador. Les claus del diccionari són els noms de les columnes en columnes i els valors són els corresponents dins linia.
columnes conté un subconjunt dels noms de les columnes de capcalera.
- Paràmetres:
- Tipus de retorn:
- Retorna:
diccionari en què les claus són les de la llista columnes i els valors de les claus s’extreuen de linia.
Un cop separades les dades de linia mitjançant el caràcter separador, la dada i-èssima correspon a la columna i-èssima de la capçalera, és a dir, a
capcalera[i].
Per exemple:
>>> cap = ['Data', 'Codi_Postal', 'Sector_Economic', 'Tram_Horari', 'Valor'] >>> linia = '2022-01-01,08001,Indústria,0-6,817' >>> cols = ['Data', 'Valor', 'Tram_Horari'] >>> res = linia_noms_cols_a_dic(cap, linia, ',', cols) >>> res == {'Data': '2022-01-01', 'Valor': '817', 'Tram_Horari': '0-6'} True
Disposes de més tests al fitxer
test-linia_noms_cols_a_dic.txt.
- csv_utils.linia_bools_a_dic(capcalera, linia, separador, bools)¶
Calcula un diccionari a partir d’una línia amb dades separades pel caràcter separador. Les claus del diccionari són els noms de les columnes en capcalera que la seva posició corresponent en bools és
Truei els valors són els corresponents dins linia.- Paràmetres:
- Tipus de retorn:
- Retorna:
diccionari en què les claus són
capcalera[i], per tots els índexside capcalera que compleixen quebools[i]ésTrue.Els valors de les claus s’extreuen de linia de manera que un cop separades les dades de linia mitjançant el caràcter separador, la dada i-èssima correspon a la columna i-èssima de la capçalera, és a dir, a
capcalera[i].
Per exemple:
>>> cap = ['Data', 'Codi_Postal', 'Sector_Economic', 'Tram_Horari', 'Valor'] >>> linia = '2022-01-01,08001,Indústria,0-6,817' >>> bools = [True, False, False, True, True] >>> res = linia_bools_a_dic(cap, linia, ',', bools) >>> res == {'Data': '2022-01-01', 'Tram_Horari': '0-6', 'Valor': '817'} True
Disposes de més tests al fitxer
test-linia_bools_a_dic.txt.