Forum >> Programmazione Python >> Files e Directory >> Trovare le somiglianze tra righe di un file .csv

Pagina: 1

Salve, ho un file .csv. ogni riga di questo file corrisponde ad una persona.

Esempio del file .csv:
Riga 1: Maria,Rosa,Mela,Mare
Riga 2: Filippo,Verde,Pera,Montagna
Riga 3: Roberta, Rosa,Fragola,Città
Riga 4: Maria,Giallo,Mela,Montagna

Come faccio a confrontare le righe tra di loro, senza considerare le righe che hanno il primo elemento (cioè il nome) uguale? Il confronto deve essere tra il secondo elemento della prima riga e il secondo elemento della seconda riga ecc. (cioè "Rosa"="Verde"? "Rosa"="Rosa"? non devo fare il confronto tra "Rosa"="Giallo" perchè il primo elemento è lo stesso). Ogni volta che il valore è uguale devo inserire in una lista (che contiene minimo due utenti) i nomi degli utenti e il valore che gli accomuna. Scusatemi per la domanda, sono diversi giorni che ci provo senza riuscirci :(.
Per il momento ho scritto solamente:
import csv

with open('utenti.csv', 'rb') as csvfile:
utenti = csv.reader(csvfile, delimiter=',')
Grazie a tutti!



--- Ultima modifica di Valeria dd in data 2015-07-10 14:12:22 ---


--- Ultima modifica di Valeria dd in data 2015-07-10 14:17:12 ---
import csv

with open('utenti.csv', 'rb') as csvfile:
utenti = csv.reader(csvfile, delimiter=',')
Qual è esattamente il dubbio?
csv.reader(....) crea un lettore che attinge le righe "grezze" dal file csvfile, e per ogni riga fornisce una lista di elementi. Il lettore va iterato tramite un ciclo for:
import csv
with open('utenti.csv', 'rb') as csvfile:
    reader = csv.reader(csvfile, delimiter=',')
    for row_elements in reader:
        fa qualcosa con la lista di elementi...
Le singole liste di elementi ottenute dalle varie righe si potrebbero salvare in una "superlista", e di conseguenza analizzare come si preferisce. In particolare il numero di combinazioni di righe da analizzare a due a due si può determinare con:
def numero_combinazioni(n):
    if n < 2:
        raise ValueError('Richiesto valore > 1')
    a = 0
    for h in range(1, n):
        a += h
    return a
dove il parametro 'n' è il numero di righe presenti nel file csv.

A seconda delle analisi che si vogliono fare potrebbero essere interessanti altre strade, come l'uso dei set:
>>> Maria = {'Rosa', 'Mela', 'Mare', 'Giallo', 'Montagna'}
>>> Filippo = {'Verde', 'Pera', 'Montagna'}
>>> Roberta = {'Rosa', 'Fragola', 'Mare', 'Città'}
>>> 
>>> list(Maria & Filippo)
['Montagna']
>>> list(Maria & Roberta)
['Mare', 'Rosa']
>>> list(Filippo & Roberta)
[]



--- Ultima modifica di Claudio_F in data 2015-07-12 19:56:04 ---
*** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione ***
grazie, ora provo con il mio file.. sei molo gentile.


Pagina: 1



Esegui il login per scrivere una risposta.