Cześć,
potrzebuję pomocy z wyrażeniem regularnym, które z pliku przetrzymującego opcje programu wyłuska mi nazwę i wartość zmiennej.
przykładowo mam opcję:
`
no_sound=yes
no_video=no
'
potrzebuję wyłuskać tylko jeden wiersz.
a gdzie to wyrażenie z którym masz problem?
to wygląda jak plik ini więc czemu nie użyjesz czegoś do obsługi plików ini zamiast zaprzęgać do tego kosztowne wyrażenia regularne
https://stackoverflow.com/questions/8884188/how-to-read-and-write-ini-file-with-python3
Kłopotliwe wyrażenie regularne
- nazwanie "wyrażenia regularnego" kłopotliwym to pleonazm. Takie masło maślane :D trochę jak "manipulująca
telewizja".
Mnie się wydaje, że źle do tego podchodzisz i lepiej byłoby albo użyć gotowego parsera, albo zrobić to ręcznie, ale linijka po linijce i każdą linijkę z osobna analizować, zamiast popełniać rozrywkę intelektualną typu "układanie magicznego regexpa, które sparsuje cały plik za jednym zamachem".
Jeśli format pliku polega na tym, że masz JAKIEŚ_SŁOWO=JAKAŚ WARTOŚĆ, to to można nawet głupim split sparsować:
line = "no_sound=yes"
print(line.split("=")) # ['no_sound', 'yes']
i masz już wyłuskane wartości i możesz je do słownika dać (tylko, że to jest optymistyczna wersja, w rzeczywistości w plikach pisanych przez ludzi zawsze możesz mieć jakieś edge case'y, nawet typu, że ktoś spacje dodał przed znakiem równości i już zamiast "no_sound" masz "no_sound ". itp. itd. więc wtedy mógłbyś użyć strip
oraz sprawdzić, czy nie będzie innych edge case'ów.
Ale nie wiem, co masz za pliki. Czy cały format to tylko XXX=YYY
czy może w tych plikach może być wszystko? Czy to jest jakiś znany format? (wtedy na pewno masz dostępne jakieś gotowe parsery).
Taki najprostszy regex to będzie
>>> text = """
... no_sound=yes
... no_video=no
... """
>>> match = re.search('no_sound=(yes|no)', text)
>>> if match:
... match.group(1)
...
'yes'
Ale najprościej to po prostu trzymaj swoją konfigurację w pliku pythona
no_sound = True
no_video = False
Wówczas wystarczy import
from config import no_video
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.