Leggere riga per riga

1946981 (3070 points)
4 14 34
asked Nov 10, 2020 in HW4 obbligatorio by 1946981 (3,070 points)
Mi chiedevo se fosse possibile leggere il file dell'homework 4 una riga per volta, in modo da analizzare ciascuna riga e poi confrontarle tra di loro. Ci ho provato ma la funzione alla fine come return mi dà solo l'ultima riga, anche se mettendo print in mezzo al ciclo mi dà i risultati riguardanti tutte le righe. Ho sbagliato qualcosa o devo per forza leggere il file tutto insieme?

Grazie.
169 views

2 Answers

Best answer
L
Lorenzo Spataro (2710 points)
0 0 12
answered Nov 10, 2020 by Lorenzo Spataro (2,710 points)
selected Nov 10, 2020 by 1946981
Ciao, non mi è chiaro che funzione hai usato e in che maniera hai letto il file, comunque posso consigliarti due modi per salvarti in una lista le varie righe del poema e poi ciclare su di essa:

Il primo consiste nel leggere tutto il file con la funzione read() e poi separare la stringa di tutto il file in più stringhe ogni volta che incontri il carattere per andara a capo ('\n'), così avrai una lista di stringhe che sarà proprio una lista di tutte le righe del file.
Il secondo modo è quello di utilizzare la funzione readlines() che ti ritorna una lista di stringhe le quali corrispondono proprio alle linee del file (attenzione però che in ogni stringa sarà compreso anche il carattere '\n').
1946981 (3070 points)
4 14 34
commented Nov 10, 2020 by 1946981 (3,070 points)
Avevo usato readline() perché con readlines() avevo dei problemi, adesso proverò anche con read() come mi hai suggerito tu, grazie
L
Lorenzo Spataro (2710 points)
0 0 12
commented Nov 10, 2020 by Lorenzo Spataro (2,710 points)
edited Nov 10, 2020 by Lorenzo Spataro
Che tipo di problemi? Comunque per quanto riguarda readline() è normale perchè quella funzione, ogni volta che viene invocata, legge la riga successiva quindi se vuoi usare quella ti conviene leggere ogni riga e salvarla in una lista (all'interno del ciclo) se poi dopo hai intenzione di confrontarle.
1946981 (3070 points)
4 14 34
commented Nov 10, 2020 by 1946981 (3,070 points)
Sto leggendo il file con read() adesso, è possibile che mi dia problemi perché considera una linea vuota alla fine del file?
L
Lorenzo Spataro (2710 points)
0 0 12
commented Nov 10, 2020 by Lorenzo Spataro (2,710 points)
Sì te la considera perché c'è un a capo anche all'ultima riga di ogni file, ti basta rimuoverla dalla lista con il metodo remove (passandogli come elemento una stringa vuota)
1946981 (3070 points)
4 14 34
commented Nov 10, 2020 by 1946981 (3,070 points)
Avevo appena risolto, ho ciclato considerando una riga in meno, grazie comunque
L
Lorenzo Spataro (2710 points)
0 0 12
commented Nov 10, 2020 by Lorenzo Spataro (2,710 points)
Di nulla, però sono curioso di capire che problemi avessi con readlines(), avevi passato il parametro 'r' in open()?
1946981 (3070 points)
4 14 34
commented Nov 10, 2020 by 1946981 (3,070 points)
No, solo non riuscivo a dividere in righe
MRinaudo (3660 points)
18 40 50
answered Nov 10, 2020 by MRinaudo (3,660 points)

Ciao 1946981,

ti conviene prima spezzare il testo per righe, utilizzando metodi delle stringhe, e poi le metti in una lista se vuoi.

Saluti.