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

  • 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

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