Encuentre y elimine una cadena que comienza y termina con una subcadena específica en python

Tengo una cadena similar a "dasdasdsafs[image : image name : image]vvfd gvdfvg dfvgd" . De esta cadena, quiero eliminar la parte que aparece en [image : y termina en : image] . Traté de encontrar la ‘subcadena’ usando el siguiente código-

 result = re.search('%s(.*)%s' % (start, end), st).group(1) 

Pero no me da el resultado requerido. Ayúdame a encontrar la forma correcta de eliminar la subcadena de la cadena.

Puedes usar re.sub :

 >>> s='dasdasdsafs[image : image name : image]vvfd gvdfvg dfvgd' >>> re.sub(r'\[image.+image\]','',s) 'dasdasdsafsvvfd gvdfvg dfvgd' 

Probablemente solo necesite escapar de los corchetes, ya que son caracteres especiales en expresiones regulares (es decir, inicio = r “\ [imagen:” y final = r “: imagen \]”).

Esto eliminará todas las apariciones en una cadena

 import re s = "dasdasdsafs[image : image name : image]vvfd gvdfvg dfvgd" s = re.sub(r'\[image :.*?: image\]', r'', s) 

El problema obvio será que no puedes simplemente insertar una cadena arbitraria, ya que contendrá caracteres que cambiarán la forma en que la miran. En su lugar, desea escapar de sus cadenas de inicio y final. Por supuesto, puede corregirlos manualmente escribiendo el código de escape correcto esta vez, pero sería mejor si hubiera una manera fácil de hacer que la biblioteca de Python lo hiciera por usted y manejara cualquier valor.

 import re start = re.escape("[image : ") end = re.escape(" : image]") st = "dasdasdsafs[image : image name : image]vvfd gvdfvg dfvgd" result = re.search('%s(.*)%s' % (start, end), st).group(1) print result