xunil32 (Normal User)
Newbie
Messaggi: 7
Iscritto: 05/09/2011
|
Salve a tutti,
come da titolo (leggermente mastodontico, ma vado di fretta e non mi viene in mente nient'altro)
vorrei sapere come leggere un file una riga alla volta ed inserirlo in una lista.
Io ho buttato giù questo
Codice sorgente - presumibilmente Python |
f=open("domande.txt","r") b=f.readlines() conta=len(b) domande=["","","","",""] a=0 while a<conta: domande[a]=f.readline()[a] a=a+1 f.close() print domande
|
Aspetto i vostri insulti/chiarimenti
|
|
Shocker000 (Member)
Rookie
Messaggi: 44
Iscritto: 06/11/2011
|
Postato originariamente da xunil32:
Salve a tutti,
come da titolo (leggermente mastodontico, ma vado di fretta e non mi viene in mente nient'altro)
vorrei sapere come leggere un file una riga alla volta ed inserirlo in una lista.
Io ho buttato giù questo
Codice sorgente - presumibilmente Python |
f=open("domande.txt","r") b=f.readlines() conta=len(b) domande=["","","","",""] a=0 while a<conta: domande[a]=f.readline()[a] a=a+1 f.close() print domande
|
Aspetto i vostri insulti/chiarimenti |
1)Ma il tuo codice funziona?O.o
2)cosa non ti è chiaro?
3)Ci sono soluzioni molto più semplici come:
Codice sorgente - presumibilmente Python |
f = open('domande.txt','r') domande = [x for x in f.readlines()] #list comprehension f.close() for x in domande: print x
|
4)Hai letto la PEP8?
Ciao Ultima modifica effettuata da Shocker000 il 11/11/2011 alle 15:15 |
|
xunil32 (Normal User)
Newbie
Messaggi: 7
Iscritto: 05/09/2011
|
Adesso mi è tutto chiaro, grazie mille!
non capisco invece perchè non posso inserire un valore nella lista in questo modo:
Codice sorgente - presumibilmente Plain Text |
a=2
domande[a]= f.readline()[a]
|
Grazie infinite per la pazienza
Ultima modifica effettuata da xunil32 il 11/11/2011 alle 16:40 |
|
Shocker000 (Member)
Rookie
Messaggi: 44
Iscritto: 06/11/2011
|
Postato originariamente da xunil32:
Adesso mi è tutto chiaro, grazie mille!
non capisco invece perchè non posso inserire un valore nella lista in questo modo:
Codice sorgente - presumibilmente Plain Text |
a=2
domande[a]= f.readline()[a]
|
Grazie infinite per la pazienza |
Lo puoi fare ma non è tanto efficiente ne affidabile, prima di tutto non sai la lunghezza della stringa, quindi alcune volte ti può andare bene salvando n caratteri in una variabile, ma molto probabilmente continuando il ciclo l'interprete ti segnalerà un errore tipo: 'string index out of the range'.
Inoltre readline() legge una sola righa ergo: basta fare domande[a] = f.readline() e non domande[a] = f.readline()[a] che ti salverebbe solo n caratteri a seconda del valore di a per esempio:
Codice sorgente - presumibilmente Python |
#a arriva a 2 con while domande[a] = f.readline()[a] #facciamo che radline legge la seguente stringa:'questa è una domanda'
|
cosa conterrà domande[a] ? conterrà la stringa 'qu' e non 'questa è una domande'; andando avanti con il ciclo, readline() leggerà un'altra riga(facciamo che questa riga è vuota, quindi ' ') ed ecco che ti ritrovi con a = 3 ed un errore
Leggi anche qui http://docs.python.it/html/lib/bltin-file-objects.html
Ciao Ultima modifica effettuata da Shocker000 il 11/11/2011 alle 17:03 |
|
xunil32 (Normal User)
Newbie
Messaggi: 7
Iscritto: 05/09/2011
|
Capito! grazie infinite per la pazienza.. ma avrei un ultima domanda
facendo in questo modo, ossia caricando le domande (si è un quiz)
e le risposte da un file txt ho un inconveniente... le stampa con alla fine il carattere di tabulazione \n o \t ... why?
|
|
Shocker000 (Member)
Rookie
Messaggi: 44
Iscritto: 06/11/2011
|
Postato originariamente da xunil32:
Capito! grazie infinite per la pazienza.. ma avrei un ultima domanda
facendo in questo modo, ossia caricando le domande (si è un quiz)
e le risposte da un file txt ho un inconveniente... le stampa con alla fine il carattere di tabulazione \n o \t ... why? |
\t\n sono caratteri speciali è strano che un print ti stampi Domanda\t\n
e non
Codice sorgente - presumibilmente Plain Text |
forse intendi che ti stampa gli elementi della lista con \n o \t?
Comunque per questo genere di cose puoi sempre usare un dizionario ti semplifica la vita Ultima modifica effettuata da Shocker000 il 11/11/2011 alle 19:11 |
|
xunil32 (Normal User)
Newbie
Messaggi: 7
Iscritto: 05/09/2011
|
Quello che intendevo dire è che li aggiunge alla lista compresi i caratteri speciali es:
["che tempo fa?\n","che giorno e'\t"] etc etc
[\code]
in ogni caso come mi hai consigliato ho utilizzato i dizionari
grazie ancora per la pazienza dimostrata
|
|
Shocker000 (Member)
Rookie
Messaggi: 44
Iscritto: 06/11/2011
|
Postato originariamente da xunil32:
Quello che intendevo dire è che li aggiunge alla lista compresi i caratteri speciali es:
["che tempo fa?\n","che giorno e'\t"] etc etc
[\code]
in ogni caso come mi hai consigliato ho utilizzato i dizionari
grazie ancora per la pazienza dimostrata |
|
|