[ sensitive @ 26.08.2005. 11:36 ] @
Pozdrav!
Potpuni sam početnik kako u radu s Pythonom, tako i u programiranju.
Čitah DiveIntoPython i na netu malo se informiram o
wxPythonu, jer želim napisati jedan program koji učitava datoteku i iz podataka
koje u njoj pročita nešto radi.
E sad, ako je npr. ulazna datoteka oblika
izvještaj: 1. tromj.
godina: 2005
artikl1, 12, 15, 16
artikl2, 16, 20, 21

a ono što meni treba su ovi brojevi s kojima kasnije radim proračune. Kako bi mi bilo zadati tip ulazne datoteke? Kao rječnik? Pokušavam nešto ovakvo:
Code:

>>> f = open("c:/../datoteka.txt")
>>> redci = f.readlines()
>>> redci
['Izvjestaj: I. tromj.\n', 'Godina: 2005\n', 'artikl 1, 12, 15, 16\n', 'artikl 2, 16, 20, 21\n']
>>> 
>>> dat = {1:()}
>>> for i in range (len(redci)):
...     dat[i] = redci[i]
...     
>>> dat
{0: 'Izvjestaj: I. tromj.\n', 1: 'Godina: 2005\n', 2: 'artikl 1, 12, 15, 16\n', 3: 'artikl 2, 16, 20, 21\n'}
>>> 
>>> redci.pop(0)
'Izvjestaj: I. tromj.\n'
>>> redci.pop(0)
'Godina: 2005\n'
>>> redci
['artikl 1, 12, 15, 16\n', 'artikl 2, 16, 20, 21\n']

Ali ne znam kako onda dobiti listu ili tuple samo ovih brojčanih unosa, jer ne znam kolika će mi biti dužina stringa artikl (to su stvarni artikli), pa sam bez ideje..
Ako je ovo jako glupo pitanje, ispričavam se. Hvala na svakoj pomoći.

Zbunjeni početnik




[Ovu poruku je menjao sensitive dana 26.08.2005. u 12:40 GMT+1]
[ alex @ 26.08.2005. 14:15 ] @
Iskoristi string funkciju split() da dobijes listu pojedinacnih elemenata za te artikle.

Primer:

Code:

f = open("file.txt")
dat = f.read().splitlines()
# ako prve dve linije nisu potrebne obrisacemo ih
del dat[:2]
for line in dat:
    # split-ujemo liniju u zasebna polja i uklanjamo prazan space
    values = [x.strip() for x in line.split(',')]
    print values


Sad, kada imas values mozes vrlo lako dalje s tim da manipulises.

Primer izlaza:

[email protected]:~/src/misc$ python dt.py
['artikl1', '12', '15', '16']
['artikl2', '16', '20', '21']
[email protected]:~/src/misc$


Pozdrav,
alex.

[Ovu poruku je menjao alex dana 26.08.2005. u 15:16 GMT+1]
[ BigBrother2005 @ 20.09.2005. 13:38 ] @
A evo i mog primera... doduse malo drugacijeg... i citanje i pisanje datoteke u jednom
Code:

#Imenik - tekstualna datoteka - Citanje i pisanje#

def pisanje():
    f=open("datoteka.xyz","w")
    broj_unosa=raw_input("unesi broj unosa")
    broj_unosa=int(broj_unosa)
    for i in range(broj_unosa):
        ime=raw_input("Unesi ime:-")
        prezime=raw_input("Unesi prezime:-")
        telefon=raw_input("Unesi telefon:-")
        data=ime+";"+prezime+";"+telefon+";"+"\n"
        f.write(data)
    f.close()

def citanje():
    f=open("datoteka.xyz","r")
    data=f.read().splitlines()
    for line in data:
        values = [lx.strip() for lx in line.split(';')]
        print values
    f.close

izbor=raw_input("unesite izbor: ")
if izbor=="pisanje": pisanje()
else:citanje()