Удалите элементы в квадратной скобке строки из Python

Oct 22 2020

Мне нужно удалить элементы в квадратных скобках строки. Однако я не могу добиться желаемых результатов.

Ниже приведен желаемый результат, который я должен получить:

Пример вывода

[[яблоко] .png -> [.png

[яблоко]]. png ->] .png

[[яблоко]]. png -> [] .png

[an] яблоко [adaykeeps]] [[доктор] away.png -> яблоко] [away.png

Ниже приведены методы, которые я использовал, но не смог получить требуемый результат:

Метод Regex

file = re.sub (r '(\ d * \ D + \ d *) \ s +', '', re.sub (r '{. +? # (\ d +). \ d +)}', r '( \ 1) ', файл));

SubString Метод

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

если len (файл)> closebracket: file = file [0: openbracket:] + file [closebracket + 1 ::]

Ответы

2 Nick Oct 22 2020 at 11:23

Вы можете сделать это с помощью регулярного выражения; ваше регулярное выражение должно соответствовать a, [за которым следует некоторое количество символов non [или ]до a ], и заменить эту строку ничем:

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)

Вывод:

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

Этот код заменит []пустую строку ''; если это не желаемое поведение, измените *в регулярном выражении на +.