Eliminar elementos en el corchete de una cadena de Python
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
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 +.