从 Python 中删除字符串方括号中的元素

Remove elements in the square bracket of a string from Python

我需要删除字符串方括号内的元素。但是,我无法得到想要的结果。

下面是我需要得到的输出:

输出示例

[[苹果].png -> [.png

[苹果].png -> .png

[[苹果]].png -> [].png

[an]apple[adaykeeps]]the[[doctor]away.png -> apple]the[away.png

以下是我使用过但无法获得所需输出的方法:

正则表达式方法

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

子字符串方法

开括号=file.find('['); closebracket = file.find(']');

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

你可以用正则表达式做到这一点;您的正则表达式需要匹配 [ 后跟一定数量的非 [] 字符直到 ],然后用空字符串替换该字符串:

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

此代码会将 [] 替换为空字符串 ``;如果这不是所需的行为,请将正则表达式中的 * 更改为 +.