2. feladat

Karakterkeresés

Írjunk meg a saját grep függvényünket!

Kérjen egy fájlnevet, illetve egy karakterláncot, majd írja ki azokat a sorokat, amikben a karakterlánc megtalálható. A grep parancshoz hasonlóan a függvény ne használjon sok memóriát gigantikus fájlok esetén sem!

A feladat megoldása során a numpy csomag loadtxt() parancsa nem használható!

Megoldás

A grep() függvény a kért fájlt megnyitja, majd a sorain egyesével végigmenve, megnézi, hogy az s string benne van-e a sorban. A memóriaterhelést úgy oldjuk meg, hogy nem olvassuk be egyszerre az összes sort, hanem egy for-ciklussal végigmegyünk a sorokon.

In [1]:
def grep(fn,s):
    """Keresd meg stringet a fajlban, es ird ki a sort amiben megvan."""
    with open(fn) as f:
        for sor in f:
            if s in sor:
                print(sor)

Ellenőrzésül kipróbálhatjuk az előző feladatban használt verssel:

In [2]:
grep("../data/szeptemer_vegen.txt", "már")
De íme sötét hajam őszbe vegyűl már,

A tél dere már megüté fejemet.