11/11/11 14:12
Shocker000
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
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:
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 11/11/11 14:15
aaa
11/11/11 15:36
xunil32
Adesso mi è tutto chiaro, grazie mille!
non capisco invece perchè non posso inserire un valore nella lista in questo modo:
a=2
domande[a]= f.readline()[a]
Grazie infinite per la pazienza
Ultima modifica effettuata da xunil32 11/11/11 15:40
aaa
11/11/11 16:00
Shocker000
Postato originariamente da xunil32:
Adesso mi è tutto chiaro, grazie mille!
non capisco invece perchè non posso inserire un valore nella lista in questo modo:
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:
#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
docs.python.it/html/lib/…
Ciao
Ultima modifica effettuata da Shocker000 11/11/11 16:03
aaa
11/11/11 18:09
Shocker000
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
Domanda
>>>
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 11/11/11 18:11
aaa