[pyar] Analizar cvs, creo que es una tontería...

Tordek kedrot en gmail.com
Dom Jul 10 10:52:41 ART 2011


On 10/07/11 10:31, Gabriel Rech wrote:
> Hola a todos,
>
> Bueno, les escribo porque tengo una duda con un archivo csv (más
> bien está separado por tabulaciones) que quiero analizar. Creo que
> mi problema es principalmente que soy novato y desconozco algunos
> trucos de iteración. Bueno, vamos al problema.
>
> Tengo un archivo de texto con la siguiente info

[...]

> Básicamente lo que quiero hacer es crear una lista para cada número
> (primera columna), que contenga todos los nombres que coinciden con
> este número, es decir:

Si las listas pueden no ser contiguas, el archivo no es demasiado 
grande, y el orden no es (muy) importante, podés hacerlo así:


#!/usr/bin/python
import csv
import collections

f = open(str("archivo.txt"), "r")
f_read = csv.reader(f, delimiter="\t")

listas = collections.defaultdict(list)
for num, nombre in f_read:
     listas[num].append(nombre)

print listas


defaultdict es un tipo de diccionario que, cuando no encuentra una 
cierta clave, te permite pasarle una función para que la cree. En 
este caso hacemos que si no encuentra un número, cree una lista vacía.

en el bucle podés ahorrate lo de
 >      num_id = row[0]
 >      nomb_id = row[1]

porque podés pasarle una lista de variables, y python las asigna a 
todas a la vez.

Al final, en listas queda guardado un diccionario, en este caso 
queda así:

{'1': ['GABRIEL', 'VICTOR', 'CARLOS'], '3': ['JUAN'], '2': 
['DAMIAN', 'MARTIN'], '4': ['JOSE', 'PEDRO']}


Para acceder a los elementos individuales, lo hacés igual que una 
lista, con []. (Aunque ojo: las claves son strings, no números).

-- 
Guillermo O. «Tordek» Freschi. Programador, Escritor, Genio Maligno.
http://tordek.com.ar :: http://twitter.com/tordek
http://www.arcanopedia.com.ar - Juegos de Rol en Argentina



More information about the pyar mailing list