[Python-es] analizar cvs, creo que es una tontería...

Kiko kikocorreoso en gmail.com
Dom Jul 10 13:33:55 CEST 2011


Tengo un archivo de texto con la siguiente info (lo adjunto (archivo.txt)):

> 1 GABRIEL
>
> 1 VICTOR
>
> 1 CARLOS
>
> 2 DAMIAN
>
> 2 MARTIN
>
> 3 JUAN
>
> 4 JOSE
>
> 4 PEDRO
>
>
>  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:
>
> lista1 = ['GABRIEL', 'VICTOR', 'CARLOS']
>
> lista2 = ['DAMIAN', 'MARTIN']
>
> lista3 = ['JUAN']
>
> lista4 = ['JOSE', 'PEDRO']
>
>
>  He escrito un script.py (lo adjunto):
>
>
> #!/usr/bin/python
> import csv
> f = open(str("archivo.txt"), "r")
> f_read = csv.reader(f, delimiter="\t")
>
> next_id = ""
> for row in f_read:
>     num_id = row[0]
>     nomb_id = row[1]
>     if (num_id != next_id):
>         nomb_id_list = []
>         nomb_id_list.append(nomb_id.rstrip("\n"))
>         next_id = num_id
>
>     else:
>         nomb_id_list.append(nomb_id.rstrip("\n"))
>     print nomb_id_list
>
>
>
Hola.
Un fichero csv es un fichero separado con comas (comma separated values). En
este caso, tu fichero está separado por tabulaciones.

Una forma poco elegante, pero que espero que entiendas, de hacer lo que
quieres es la siguiente:

l1 = [] # lista donde vas a meter los nombres con ID1
l2 = [] # lista donde vas a meter los nombres con ID2
l3 = [] # lista donde vas a meter los nombres con ID3
l4 = [] # lista donde vas a meter los nombres con ID4
a = open('ruta/a/tu/archivo.txt', 'r')
for linea in a:
    data = linea.split()
    if data[0] == '1':
        l1.append(data[1])
    if data[0] == '2':
        l2.append(data[1])
    if data[0] == '3':
        l3.append(data[1])
    if data[0] == '4':
        l4.append(data[1])

Si los IDs son solo 4 esto te podría valer. Si tienes muchos IDs se puede
plantear de otra forma.

Seguro que alguien con más conocimientos te propone soluciones mejores.

Saludos.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110710/b20ad8cd/attachment.html>


Más información sobre la lista de distribución Python-es