• Członkowie 1 post
    30 marca 2024 11:56

    Pomoże ktoś, tak proste że chyba wstyd o to pytać? A ja już 2 dni siedzę i próbuję coś z tym zrobić.

    pattern = r'[FLTSIM.(.?)][\s\S]?title\s?=\s?"(.?)"[\s\S]?texture\s?=\s?"(.*?)"'

    Pattern powyżej, pobiera wartości umieszczone w cudzysłowach dla tile i texture. No i to działa.
    Co należało by w nim zmienić, by rozpoznawał też wartości, które nie są ograniczone cudzysłowami. Tak jak w przypadku sekcji [fltsim.1] UWAGA: zamiast spacji wstawiłem kropki, bo po zatwierdzeniu komentarza widzę, że puste spacje są tutaj wycinane.

    Pod fltsim.1 widzimy, że dodatkowym utrudnieniem, może być
    - w wartości mogą się znaleźć spacje
    - nieistotny opis występujący po średniku. Też z różną ilością lub nawet brakiem spacji.
    - jakieś nieistne białe znaki, mogące utrudnić wyodrębnienie wartości.
    - wszędzie ilość spacji może być różna, chociaż przyjmijmy raczej, że początkowe 'tile =' 'texture =' zawsze wyglądają właśnie tak.

    [FLTSIM.0]
    title = "Mig-15"
    texture = ""

    [FLTSIM.1]
    title = Mig-15 Corea War ......................;........Variation name
    texture = .....................Corea ;texture folder

    Pomożecie. Nie znam się na programowaniu, choć kiedyś 20-30l. temu jako młody trochę się tym interesowałem. Przez 2 dni nie udało mi się poprawić by zawsze odpowiednio działało. Ostatnia moja próba to:
    pattern = r'[FLTSIM.(.?)][\s\S]?(?:title|texture)\s=\s(.?)\s?(?:;|$)'

    Skrypt z tym patternem był napisany by umożliwić kasowanie niepotrzebnych malowań z dodatków do Microsoft Flight Simulator, ale właśnie nie działa odpowiednio z niektórymi plikami aircraft.cfg
    W załączniku, jeśli komuś się przyda jest cały skrypt

    insert_drive_file
    del2.zip

    ZIP, 1,4 KB, przesłany przez skandal 30 marca 2024.

  • 2 kwietnia 2024 22:12

    Dałeś rade? Przydałyby się przykłady różnych wariantów jakie mają być rozpoznawane. Nie wiem czy przedstawione powyższe dwa są wystarczające.