Keresés

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

  • F1DO

    senior tag

    válasz cousin333 #3264 üzenetére

    Megnézem ezt is, csak adjam le a munkát, köszönöm Neked is!

  • F1DO

    senior tag

    válasz F1DO #3265 üzenetére

    Jó, mostmár beugrott, működik.
    Az
    enumerate(fajl.readlines()):
    helyett:
    enumerate(az egy tételt kiadó, össze appendelt lista neve): -t adom meg és így már úgy viselkedik ahogy elképzeltem, az appendelős for ciklus után betéve a kódod egy 'összeállított' file-ba írandó tétel után kiírja a hozzá tartozó keresett szót. Ez mehet változóba és filenévként...

    Köszönöm

  • F1DO

    senior tag

    válasz sztanozs #3263 üzenetére

    Ott van most az elakadásom, hogy olyan listában akarom megtalálni a string-et, amiben 'Egész komplett mondatok szerepelnek', ' és így a lista elemeire nem használható a find vagy az index metódus' -- arra hogy egyetlen szó (pl. elemeire) pozícióját megtaláljam a listában..

    ugye a file-ból soronként veszem ki az adatokat és az egész algoritmus listákkal, lista feltöltésekkel dolgozik.

    Ami megoldást adtál az a komplett file-ra ráfut, csak abban a for ciklusban ahol a feltöltés zajlik és ahol 'találkozik' az algoritmus a keresett szóval és meg tudná fogni az már lista adattípus és az egész sor mint a lista egyetlen eleme kerül a listába
    egy kimásolandó új file-ba illő szövegszakaszt append-el bele tudom tenni egy újabb lista adattípusba, de annak minden egyes eleme a komplett sorok lesznek és nekem egyetlen sor közül kellene egy szót kivennem.

  • F1DO

    senior tag

    válasz sztanozs #3257 üzenetére

    Egy blokkon (kivett sorokon) belül 1x fordul elő a keresett kulcsszó ami után van két szóköz és utána 8 karakter hosszan a kívánt adat.

    Így a blokk legyűjtő for ciklusomba tenném amit írtál elsőre kódsort, azonban az except ágra fut, semmit sem ír ki. Kérdésem hogy a szoveg változóba esetleg rosszul hivatkozhatok, -
    ez lehet a következő?

    fajl = open("forrásfile.TXT", "r")
    szoveg = fajl.readlines()

    avagy
    szoveg = fajl ??

    tehát a teljes file kell neki vagy az a sor amin épp dolgozik a for ciklusban? (Kipróbáltam mindkettőt, eredménytelenül)

  • F1DO

    senior tag

    válasz cousin333 #3259 üzenetére

    Köszönöm, igen több megoldás is lehet, kivesézem amit írtál.. (2 napja python-ozok és van ami elég specifikus a nyelvben, plusz sietni is kell a feladattal, így nem biztos hogy legelegánsabb, pontosabb megoldásokat használom)

  • 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

  • F1DO

    senior tag

    válasz cousin333 #3252 üzenetére

    No, az éjjel tovább írtam egy lehetséges megoldást, az elmélete az, hogy
    találtam egy függvényt, ami azt csinálja hogy két keresési értékre megmondja hogy melyik sorban vannak azok a szöveges file-ban. A két keresési értéknek (mivel kötött formátumú, ismétlődő szövegrészekről van szó, így meg lehetett adni a kezdő szövegrészt és a záró szövegrészt - ezek lettek a két keresési értékek)
    A függvény legyűjtötte ezen sorok számát. A sorok számát aztán beletettem egy további listába, ami egymás után folytatólag tartalmazta a kezdő és záró sorok sorszámát. Aztán ezt egy for ciklussal (mert tudtam hanyadik sorban van az utolsó záró sor sorszáma) és ahhoz használt két számlálóval - a számlálókat léptetve - már range értékként egy további for ciklussal kinyertem a köztes sorok sorszámait - így megkaptam a 'lényegi információt' tartalmazó sorok sorszámát. Egy ilyen 'range' után betettem egy ellenőrző szöveges sort, ami alapján látom hogy helyesen működik-e a script (egyszerűen 'következő tétel' kiírás jelenik meg az adott for ciklus lefutása után) - ez alapján eddig megvagyok.

    Most jön az, hogy au egy tételhez tartozó sorokat legyűjtő for ciklus végére teszek egy file kiíratást ami soronként hozzáadja, 'másolja' a legyűjtött sorok sorszámában lévő szöveget, majd lezárja és nyitja a következő file-t, abba is írja a legyűjtött következő sorokat és így tovább. Még az kellene, hogy a megnyitott fileok amikbe a legyűjtött sorok másolódnak olyan filenéven legyen aminek adata szintén a forrás textfile-ban van.
    Most keresem azt a megoldást amivel a kulcsszó utáni adott karakterhosszúságban kiveszi és egy változóba teszi azt az infót ami aztán a file neve is lesz.

    A talált két keresőértékes függvény:
    def search_multiple_strings_in_file(file_name, list_of_strings):
    """Get line from the file along with line numbers, which contains any string from the list"""
    line_number = 0
    list_of_results = []
    # Open the file in read only mode
    with open(file_name, 'r') as read_obj:
    # Read all lines in the file one by one
    for line in read_obj:
    line_number += 1
    # For each line, check if line contains any string from the list of strings
    for string_to_search in list_of_strings:
    if string_to_search in line:
    # If any string is found in line, then append that line along with line number in list
    list_of_results.append((string_to_search, line_number, line.rstrip()))
    # Return list of tuples containing matched string, line numbers and lines where string is found
    return list_of_results

    és a lényegi sorok sorszámát tartalmazó lista feltöltése:
    kezdet = 0
    vege = 1

    while vege < max(sorszamlista):
    print('text kezdete: ',sorszamlista[kezdet])
    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()
    print('Következő tétel ##########################')
    kezdet+=2
    vege+=2

  • F1DO

    senior tag

    Sziasztok,

    Nagyon küzdök, mint disznó a jégen... hátha tudtok segíteni...
    Python-ban ollóznék össze egy olyan scriptet, ami egy nagy méretű TXT file-ból megadott keresési szövegrész-től a következő ilyen keresési szövegrészig kiveszi a köztes text tartalmat és azt külön file-okba kiteszi (ismétlődő szövegrészek, amikben pár adat eltér, ezeket kellene legyűjteni és egyenként külön file-ba tenni)

    Namost az elképzelésem az így az elején, hogy soronként vizsgálnám és emelném át új, írásra nyitott file-okba a tartalmat, de egyrészt nem találtam még megoldást egy keresési összetett szó (mondat) miként található meg úgy, hogy az érintett sorindexet adja vissza (azaz a keresett 'mondat' hanyadik sorokban van)
    Néztem a read kezdetű python függvényeket, mindenhol a read() függvényt hozzák a mintapéldákban, amivel az egész TXT file betölthető lenne, de nálam mikor ezt használnám konkrétan nem ad vissza semmit kiprintelve. Hiba nélkül lefut a kód, de nem jelenik meg semmi adat. Nem értem.

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