Oppure

Loading
11/11/11 13:28
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 :D
aaa
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 :D

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! :D
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! :D
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 :pat:
Leggi anche qui :D docs.python.it/html/lib/…

Ciao:)
Ultima modifica effettuata da Shocker000 11/11/11 16:03
aaa
11/11/11 17:49
xunil32
Capito! grazie infinite per la pazienza.. ma avrei un ultima domanda :D
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? :noway:
aaa
11/11/11 18:09
Shocker000
Postato originariamente da xunil32:

Capito! grazie infinite per la pazienza.. ma avrei un ultima domanda :D
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? :noway:

\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 :k:
Ultima modifica effettuata da Shocker000 11/11/11 18:11
aaa
15/11/11 13:30
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 :k:
grazie ancora per la pazienza dimostrata :rofl:
aaa
15/11/11 14:00
Shocker000
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 :k:
grazie ancora per la pazienza dimostrata :rofl:

Dai un'occhiata anche al modulo shelve :)
Eng:docs.python.org/library/…
Ita:docs.python.it/html/lib/…

ciao :)
aaa