Keresés

Új hozzászólás Aktív témák

  • cousin333

    addikt

    válasz F1DO #3255 üzenetére

    Továbbra is úgy gondolom, hogy neked felesleges a sorszámokkal foglalkozni, elvégre a START sztring és a STOP sztring nincs átfedésben. Egyszerűen végig kell menni a fájlon, és kiírogatni a megfelelő sorokat, majd nyitni egy új fájlt, oda is kiírni... stb.

    Tegyük fel, hogy van a szoveg.txt fájlod, amit fel akarsz dolgozni:

    blahbla
    blahbla2
    START
    Első sor
    Adat: valami
    még egy sor
    STOP
    blah
    START
    Új fájlba
    újabb sor
    Adat: minden
    STOP
    semmi

    Ekkor csak egyszer végig kell menni a fájlon és keresni a megfelelő sorokat. A nehézséget csak az jelenti, ha a START és a STOP között van a sor, ami a fájlnevet adja, így azt nem tudhatjuk előre. Ilyenkor azt csinálnám, hogy univerzális fájlnevet adok, és a végén átnevezem:

    import os

    start_string = 'START'
    stop_string = 'STOP'
    file_string = 'Adat:'

    filename = ''
    output_file = None

    with open('szoveg.txt', 'r') as input_file:
        for line in input_file:
            if line.startswith(start_string):
                output_file = open('output.txt', 'w')
            elif line.startswith(stop_string):
                output_file.close()
                os.rename('output.txt', filename + '.txt')
            elif line.startswith(file_string):
                filename = line[6:]    # Vagy ahogy ki kell találni a fájlnevet
            else:
                output_file.write(line)

  • sztanozs

    veterán

    válasz F1DO #3255 üzenetére

    ha a kifejezés csak egyszer van:
    szoveg = 'valami másvalami'
    kifejezes = 'más'
    hossz = 3
    try:
    ix = szoveg.index(kifejezes)
    # ha a kifejezes is kell + hossz
    print('kif szoveg: ', szoveg[ix:ix+len(kifejezes)+hossz])
    # ha a kifejezes nem kell
    print('csak szoveg: ', szoveg[ix+len(kifejezes):ix+len(kifejezes)+hossz])
    except:
    pass

    ha a kifejezés többször is van:
    szoveg = '''valami másvalami
    még másvalami
    egészen más'''
    kifejezes = 'más'
    hossz = 3
    try:
    while True:
    ix = szoveg.index(kifejezes)
    # ha a kifejezes is kell + hossz
    print('kif szoveg: ', szoveg[ix:ix+len(kifejezes)+hossz])
    # ha a kifejezes nem kell
    print('csak szoveg: ', szoveg[ix+len(kifejezes):ix+len(kifejezes)+hossz])
    szoveg = szoveg[ix+len(kifejezes)+hossz:]
    except:
    pass

    ha a kifejezés többször is van, és eleje-vége között kell a szöveg:
    szoveg = '''random szöveg
    valami másvalami
    még másvalami
    egészen más
    szöveg ami bekavarhat :D'''
    eleje = 'más'
    vege = 'mi'
    try:
    while True:
    ix = szoveg.index(eleje )
    iy = szoveg[ix:].index(vege)
    # találat
    print(szoveg[ix:ix+iy+len(vege)])
    szoveg = szoveg[ix+iy+len(vege):]
    except:
    pass

  • F1DO

    senior tag

    válasz F1DO #3255 üzenetére

    Az indentálás nem jelenik meg helyesen valamiért a fórummotor kiveszi így aláhúzással jelölöm

    kezdet = 0
    vege = 1
    while vege < max(sorszamlista):
    ____print('text kezdete: ',sorszamlista[kezdet]) # teszt kiíratás
    ____print('text vége: ',sorszamlista[vege])
    ____sorkoz = range(sorszamlista[kezdet]-1, sorszamlista[vege]+1)

    ____for n in sorkoz :
    _________print(text[n].rstrip()) # text = fajl.readlines() #tesztelésképp kiíratás
    _________print('Következő tétel ##########################')
    ____kezdet+=2
    ____vege+=2

Új hozzászólás Aktív témák