Python: ez az egyszerű fájl-olvasás hogy valósítható meg? (bővebben lent)
Szeretnék egy olyan kódot írni, amely soronként végigolvas egy fájlt, ha bizonyos azonosítókat talál, akkor az utána következő sort hozzáfűzi egy karakterlánchoz, majd a legutolsó azonosítót ha megtalálta, az azutáni sort is hozzáfűzi és csak ekkor írja ki a kimeneti fájlba a karakterláncot.
Azt hogy lehetne megoldani, hogy az ékezetes azonosítót találja meg, akár CP1250, akár UTF-8 a kódtábla amiben íródott?
Mivel kezdő vagyok, ezért sajnos sokmindent nem tudok e programozási nyelvben: jó lenne pl. konstans tömbként használni az azonosítókat (egyszerűbb lenne)
A fájl végéig történjen az olvasás: ezt se tudom, illetve még az olvasásnál, amikor azonosító sor utáni sort olvasok, csak akkor fűzze hozzá ha a hossza >0.
Pl. így néz ki a feldolgozandó fájl:
Alma
Szép, piros alma
Körte
érett körte
Csipkebogyó
Sok C vitamint tartalmaz
A kód:
file = open('gyumolcsok.txt', 'r')
masikfile = open('tulajdonsagok.txt', 'w')
egysor = file.readline()
if (egysor == 'Alma') || (egysor == 'Körte') || (egysor == 'Csipkebogyó')
_egysor = file.readline()
_kiirando = kiirando + " " +kiirando + egysor
if (egysor == 'Kókusz')
_kiirando = " " +kiirando + egysor
_print(masikfile,kiirando)
_kiirando = ""
file.close()
masikfile.close()
file.close()
Szövegesen mondatszerű leírással le tudom írni, ebben a pár parancsban tudnál segíteni?
konstans n = 3
tomb [0..2]'Alma', 'Körte', 'Csipkebogyó, 'Kókusz'
ciklus amíg nem vége (fájl)
_egysor = file.readline()
_ ciklus i 0 .. n-1
if tomb[i] == egysor
...
Utasítás van. Parancs nincs egy programnyelv elemei között sem.
Nagyon megerőltető lenne fellapozni egy tutorialt vagy könyvet? Egyszerűbb itt kódsorokat koldulni?
Rájöttem, hogy ciklus mehet "n"-ig, aztán elágazáson belül, a feltétel teljesülése esetén elég ellenőrizni, hogy i=n akkor kiírás és inicializálás.
Érdekes lehet még az is, ha a fájlnak "utolsó azonosító" nélkül lenne vége.
A soronkénti fájl-olvasásra keresnék példákat, de hiába, mert nem akar sikerülni.
Van egy példa, melyről azt ígérik, hogy soronként olvas, ez elvileg valamennyire működik, azt nem tudom: miképpen értékeljem ki az adott sort, mert ha megadom feltételnek hogy pl. az "Alma" szóval egyenlő a "li", akkor olvasson ismét egy sort és írja ki, rögtön nem működik.
f = open("proba.txt","r",encoding="utf-8" )
f2 = open("proba2.txt","w" )
pos = f.tell()
while (True):
_li = f.readline()
_newpos = f.tell()
_if newpos == pos: # stream position hasn't changed -> EOF
__break
_else:
__pos = newpos
__print(f2,li)
f.close()
f2.close()
Találtam egy olyan megoldást is, ami a fájlmegnyitás után egy string-tömbben adja vissza a sorokat.
rl=f.readlines()
Ennek a tömb méretét miképp kérhetem le Python-ban, határozhatom meg, hogy végigmehessek rajta?
Aki csinált már ilyet, akár a soronkénti olvasással, akár ez utóbbi utasítással, mondana véleményt: melyik az egyszerűbb? (gondolom fájlméretre tekintettel a soronkénti feldolgozás lenne egyszerűbb), mert ez a "rl=f.readlines()" berántja az egészet a memóriába.
Ha próbálok végigmenni a tömbön és minden lépést kiiratni, nem történik semmi:
for i in range( len(rl) ):
_if rl[i]=="Alma":
__egysor = file.readline()
__kistring=egysor;
__print(rl[i])
__print(egysor)
rl hossza valós érték print(len(rl)) kiírja: tehát (elvileg) beolvasta a sorokat.
Ha van kedve valakinek, segít?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!