Forum >> Programmazione Python >> Files e Directory >> Estrapolazione dati da file csv

Pagina: 1

Buonasera, volevo sottoporre a voi un esempio di ignoranza .... il mio ... :)

Diventando seri, io ho un file di tipo csv (campi separati da ";" o in alcuni casi seprati da ",") e devo effettuare delle ricerche all'interno i campi di questi file.
Quello che non mi torna (che non capisco) è che se io metto un confronto a un tal campo (colonna) del file, e per coincidenza questo è vero , non capisco come risalire alla riga dove c'è il campo con la colonna vera.
Mi spiego meglio , se io cerco nella colonna row4 la stringa "Ravenna" come faccio a risalire che la riga dove c'era la tal stringa era la numero.....
Allego programmino , scopizzato qua e la, che fa il suo dovere di leggere il file e stamparmelo; non ho messo il confronto perchè quando vero non so come gestirlo.
In pratica se il confronto è vero, a me serve sapere in qualle riga è vero e devo "prelevare" l'intera riga per gestirla altrove.

import csv
file_csv = 'c:/Python_3_6/Progetti/Prove/dati1.txt'
with open(file_csv,newline='') as csvfile:
    reader = csv.reader(csvfile,delimiter = ';')
    
    for row in reader:
        print (len(row), row)
Ringrazio anticiparamente tutti per il supporto che vorrete darmi.
Grazie

Alberto
------
Alberto
Allegati
Ciao Alberto, prima considerazione ho letto una cosa che un po' mi spaventa, neanche fosse IT di S.King:

(campi separati da ";" o in alcuni casi seprati da ",")

Spero per te che non devi controllare la presenza di ";" o ",". :O

Comunque sia la soluzione al tuo quesito è piuttosto semplice, ti basta cercare l'occorrenza con un "in" per verificarne la presenza. Non so se hai notato che il tuo row è una lista, quindi sai già come estrarre solo le righe che ti interessano.

Per il numero di riga puoi inserire un semplice contatore ed incrementarlo ad ogni passaggio, in modo da sapere esattamente in quale punti ti trovi.

Fammi sapere se ti è tutto chiaro.
Cya
Daniele aka Palmux said @ 2017-12-22 12:43:53:
Ciao Alberto, prima considerazione ho letto una cosa che un po' mi spaventa, neanche fosse IT di S.King:

(campi separati da ";" o in alcuni casi seprati da ",")

Spero per te che non devi controllare la presenza di ";" o ",". :O

Comunque sia la soluzione al tuo quesito è piuttosto semplice, ti basta cercare l'occorrenza con un "in" per verificarne la presenza. Non so se hai notato che il tuo row è una lista, quindi sai già come estrarre solo le righe che ti interessano.

Per il numero di riga puoi inserire un semplice contatore ed incrementarlo ad ogni passaggio, in modo da sapere esattamente in quale punti ti trovi.

Fammi sapere se ti è tutto chiaro.
Cya

Ciao Daniele, io so come di estraggono le righe da una lista (forse anche no, visto il mio livello) però se io creo una lista con un ventina di dati all'interno e decido di suddividerli in gruppi di 5 dati , io riesco a identificare il gruppo (dei 5) nel quale è compreso il valore che cerco io; ricavo anche ho 4 gruppi(di 5 dati ciascuno).
Leggendo però il file con la routine che ho indicato sopra, io non ho una lista di 28 elementi (come quella che ho ricreato io) ma 4 liste di 7 elementi.
Se io provo a analizzare la lista contenuta nel row del file mi dice che ho 1 riga e non 4 ??
Ci ho perso delle ore, e sono arrivato alla conclusione che essendo io un "brocco" non ho capito come funzionano le liste (almeno quelle che derivano da un file csv).
Mi potresti dare delle dritte.
Grazie




--- Ultima modifica di trescon in data 2017-12-26 20:49:37 ---

--- Ultima modifica di trescon in data 2017-12-26 20:50:29 ---

--- Ultima modifica di trescon in data 2017-12-26 20:50:58 ---
------
Alberto
Allegati
Alberto scusa, non ho capito molto di quello che chiedi, mi sono perso. Quindi facciamo un passo indietro e riprendiamo il tuo codice. Il quesito iniziale era quello di trovare Ravenna nel CSV, per sapere in che riga si trova.
import csv

file_csv = 'c:/Python_3_6/Progetti/Prove/dati1.txt'
with open(file_csv,newline='') as csvfile:
    reader = csv.reader(csvfile,delimiter = ';')  
    for value, row in enumerate(reader, 1):
        if "Ravenna" in row:
            print("Trovato nella riga {} - {}".format(value, row))

Trovato nella riga 3 - ['3', 'Caffè', 'Macchiato', 'Via S. Agostino', 'Ravenna', '24040', 'Ra']
Come andiamo ora, ci siamo?

Cya
Daniele aka Palmux said @ 2017-12-26 21:18:53:
Alberto scusa, non ho capito molto di quello che chiedi, mi sono perso. Quindi facciamo un passo indietro e riprendiamo il tuo codice. Il quesito iniziale era quello di trovare Ravenna nel CSV, per sapere in che riga si trova.
import csv

file_csv = 'c:/Python_3_6/Progetti/Prove/dati1.txt'
with open(file_csv,newline='') as csvfile:
    reader = csv.reader(csvfile,delimiter = ';')  
    for value, row in enumerate(reader, 1):
        if "Ravenna" in row:
            print("Trovato nella riga {} - {}".format(value, row))

Trovato nella riga 3 - ['3', 'Caffè', 'Macchiato', 'Via S. Agostino', 'Ravenna', '24040', 'Ra']
Come andiamo ora, ci siamo?

Cya

Per essere quello che volevo ... lo è.... solo che hai usato sintassi/istruzioni che proprio io non conosco.
Hai voglia di spendere due righe per spiegarmi la logica dei comandio usati ?

Grazie per l'esempio, se non riesci cercherò di capire da solo PERCHE' funziona.

Ancora grazie

Alberto
------
Alberto


Pagina: 1



Esegui il login per scrivere una risposta.