with regular part python regex

part - Python string.replace expresión regular



replace python regular expression (4)

Como un resumen

import sys import re f = sys.argv[1] find = sys.argv[2] replace = sys.argv[3] with open (f, "r") as myfile: s=myfile.read() ret = re.sub(find,replace, s) # <<< This is where the magic happens print ret

Esta pregunta ya tiene una respuesta aquí:

Tengo un archivo de parámetros del formulario

parameter-name parameter-value

donde los parámetros pueden estar en cualquier orden, pero solo hay un parámetro por línea. Quiero reemplazar el parámetro-valor de un parámetro con un nuevo valor.

Estoy usando una función de reemplazo de línea publicada anteriormente ( Buscar y reemplazar una línea en un archivo en Python ) para reemplazar la línea que usa string.replace de string.replace (patrón, subst). La expresión regular que estoy usando funciona, por ejemplo, en vim pero no parece funcionar en string.replace. Aquí está la expresión regular que estoy usando:

line.replace("^.*interfaceOpDataFile.*$/i", "interfaceOpDataFile %s" % (fileIn))

donde interfaceOpDataFile es el nombre del parámetro que estoy reemplazando (/ i para mayúsculas y minúsculas) y el nuevo valor del parámetro es el contenido de la variable fileIn. ¿Hay una manera de hacer que Python reconozca esta expresión regular o si no hay otra forma de realizar esta tarea?


Usted está buscando la función re.sub .

import re s = "Example String" replaced = re.sub(''[ES]'', ''a'', s) print replaced

imprimirá axample atring


re.sub es definitivamente lo que buscas. Y así, ya sabes, no necesitas los anclajes y los comodines.

re.sub(r"(?i)interfaceOpDataFile", "interfaceOpDataFile %s" % filein, line)

hará lo mismo: hacer coincidir la primera subcadena que se parece a "interfaceOpDataFile" y reemplazarla.


str.replace() v2 | v3 no reconoce expresiones regulares.

Para realizar una sustitución utilizando una expresión regular, use re.sub() v2 | v3

Por ejemplo:

import re line = re.sub( r"(?i)^.*interfaceOpDataFile.*$", "interfaceOpDataFile %s" % fileIn, line )

En un bucle, sería mejor compilar primero la expresión regular:

import re regex = re.compile(r"^.*interfaceOpDataFile.*$", re.IGNORECASE) for line in some_file: line = regex.sub("interfaceOpDataFile %s" % fileIn, line) # do something with the updated line