Remova os elementos no colchete de uma string do Python
Devo remover os elementos dentro do colchete de uma string. No entanto, não consigo obter os resultados desejados.
Abaixo está a saída desejada que devo obter:
Exemplo de saída
[[apple] .png -> [.png
[apple]]. png ->] .png
[[apple]]. png -> [] .png
[an] apple [adaykeeps]] the [[doctor] away.png -> apple] the [away.png
Abaixo estão os métodos que usei, mas não consegui obter a saída necessária:
Método Regex
arquivo = re.sub (r '(\ d * \ D + \ d *) \ s +', '', re.sub (r '{. +? # (\ d +). \ d +)}', r '( \ 1) ', arquivo));
Método SubString
openbracket = file.find ('['); closebracket = arquivo.find (']');
if len (arquivo)> closebracket: arquivo = arquivo [0: openbracket:] + arquivo [closebracket + 1 ::]
Respostas
Você pode fazer isso com regex; sua regex precisa corresponder a a [seguido por algum número de caracteres não [ou ]até a ], e substituir essa string por 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)
Resultado:
[.png
].png
[].png
apple]the[away.png
Este código será substituído []por uma string vazia ``; se este não for o comportamento desejado, altere o *na regex para a +.