Mam plik parametru formularzaPython string.replace wyrażenie regularne
parameter-name parameter-value
gdzie parametry mogą być w dowolnej kolejności, ale jest tylko jeden parametr w wierszu. Chcę zastąpić parametr-wartość parametru jedną nową wartością.
Używam funkcji zastąpienia linii wcześniej (Search and replace a line in a file in Python), aby zastąpić linię, która korzysta z Pythona string.replace (wzór, subst). Wyrażenie regularne, którego używam działa na przykład w vimie, ale nie działa w string.replace. Tutaj jest wyrażenie regularne, które używam:
line.replace("^.*interfaceOpDataFile.*$/i", "interfaceOpDataFile %s" % (fileIn))
gdzie interfaceOpDataFile jest nazwą parametru, że jestem zastępując (/ I dla przypadku niewrażliwe) i nowa wartość parametru jest zawartość zmiennej fileIn. Czy istnieje sposób, aby Pythona rozpoznać wyrażenie regularne, czy istnieje inny sposób na wykonanie tego zadania? Z góry dziękuję.
Korzystanie skompilować poza pętlą jest świetne porady, ładne niuans tam - dzięki. – pokero
Musiałem przekazać w 'flags = re.MULTILINE' jako ostatni argument do' re.sub', aby to działało, co ma sens - [przeczytaj o tym w dokumentacji tutaj] (https: // docs .python.org/2/library/re.html # re.MULTILINE) – tobek
Kompilacje regex są buforowane ([docs] (https://docs.python.org/3.6/library/re.html#re.compile)) , więc kompilacja nie jest nawet konieczna. Ale jak pokazujesz, jeśli kompilujesz, kompiluj poza pętlą. – alttag