Ho un file di parametri del moduloPython String.Replace espressione regolare
parameter-name parameter-value
dove i parametri possono essere in qualsiasi ordine, ma c'è solo un parametro per riga. Voglio sostituire il valore di parametro di un parametro con un nuovo valore.
Sto usando una funzione di sostituzione linea precedentemente registrata (Search and replace a line in a file in Python) per sostituire la linea che utilizza python string.replace (modello, sotto). L'espressione regolare che sto usando funziona ad esempio in vim ma non sembra funzionare in string.replace. Ecco l'espressione regolare che sto usando:
line.replace("^.*interfaceOpDataFile.*$/i", "interfaceOpDataFile %s" % (fileIn))
dove interfaceOpDataFile è il nome del parametro che sto sostituendo (/ i per case insensitive) e il nuovo valore del parametro è il contenuto della variabile filein. C'è un modo per far sì che Python riconosca questa espressione regolare oppure esiste un altro modo per eseguire questa operazione? Grazie in anticipo.
Utilizzando la compilazione di fuori del ciclo è consiglio grande, bella sfumatura lì - grazie. – pokero
Ho dovuto passare in 'flags = re.MULTILINE' come ultimo argomento a' re.sub' per farlo funzionare, il che ha senso- [leggi qui nei documenti qui] (https: // docs .python.org/2/library/re.html # re.MULTILINE) – tobek
compilazioni regex sono memorizzate nella cache ([docs] (https://docs.python.org/3.6/library/re.html#re.compile)) , quindi la compilazione non è nemmeno necessaria. Ma come si mostra, se si compila, compilare al di fuori del ciclo. – alttag