Remova os elementos no colchete de uma string do Python

Oct 22 2020

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

2 Nick Oct 22 2020 at 11:23

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 +.