Kezdőoldal » Számítástechnika » Programozás » Python: ez az egyszerű fájl-ol...

Python: ez az egyszerű fájl-olvasás hogy valósítható meg? (bővebben lent)

Figyelt kérdés

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()



2021. nov. 24. 19:04
 1/8 anonim ***** válasza:
0%
Rágd végig magad valamelyik ingyenesen elérhető python könyv első fejezetein és akkor megtudod.
2021. nov. 24. 19:13
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:

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

...

2021. nov. 24. 19:17
 3/8 anonim ***** válasza:
0%

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?

2021. nov. 24. 19:21
Hasznos számodra ez a válasz?
 4/8 A kérdező kommentje:
Továbbmehetsz nyugodtan másik kérdésre, ha e kérdés számodra nem tetszik.
2021. nov. 24. 19:22
 5/8 A kérdező kommentje:

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.

2021. nov. 24. 20:45
 6/8 A kérdező kommentje:

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()

2021. nov. 25. 12:53
 7/8 A kérdező kommentje:

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.

2021. nov. 25. 12:58
 8/8 A kérdező kommentje:

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?

2021. nov. 25. 13:21

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!