Eliminar elementos en el corchete de una cadena de Python

Oct 22 2020

Debo eliminar los elementos dentro del corchete de una cuerda. Sin embargo, no puedo obtener los resultados deseados.

A continuación se muestra la salida deseada que debo obtener:

Ejemplo de salida

[[manzana] .png -> [.png

[manzana]]. png ->] .png

[[manzana]]. png -> [] .png

[una] manzana [adaykeeps]] el [[doctor] away.png -> manzana] el [away.png

A continuación se muestran los métodos que he usado pero no pude obtener el resultado requerido:

Método Regex

archivo = re.sub (r '(\ d * \ D + \ d *) \ s +', '', re.sub (r '{. +? # (\ d +). \ d +)}', r '( \ 1) ', archivo));

Método SubString

openbracket = archivo.find ('['); closebracket = file.find (']');

if len (archivo)> closebracket: file = file [0: openbracket:] + file [closebracket + 1 ::]

Respuestas

2 Nick Oct 22 2020 at 11:23

Puede hacer esto con expresiones regulares; su expresión regular debe coincidir con un [seguido de un número de caracteres no [o ]hasta un ], y reemplazar esa cadena con nada:

import re

strings = ['[[apple].png', '[apple]].png', '[[apple]].png', '[an]apple[adaykeeps]]the[[doctor]away.png']

for s in strings:
    name = re.sub(r'\[[^][]*\]', '', s)
    print(name)

Salida:

[.png
].png
[].png
apple]the[away.png

Este código se reemplazará []con una cadena vacía ''; si este no es el comportamiento deseado, cambie el *en la expresión regular a a +.