Forum
>>
Programmazione Python
>>
Files e Directory
>>
Trovare le somiglianze tra righe di un file .csv
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
|
Scritto da Valeria dd ![]() |
2015-07-10 14:11:47 - Trovare le somiglianze tra righe di un file .csv
|
|
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 --- |
|
|
Scritto da Claudio_F |
2015-07-12 19:51:29 - Re: Trovare le somiglianze tra righe di un file .csv
|
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 adove 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 *** |
|
|
Scritto da Valeria dd ![]() |
2015-07-12 22:19:27 - Re: Trovare le somiglianze tra righe di un file .csv
|
|
grazie, ora provo con il mio file.. sei molo gentile.
|
Pagina: 1
Esegui il login per scrivere una risposta.

di fianco ai colori per non perdere l'indentazione ***