【问题标题】:Remove elements in the square bracket of a string from Python从 Python 中删除字符串方括号中的元素
【发布时间】:2021-02-05 01:16:10
【问题描述】:

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

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

输出示例

[[苹果].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)',文件));

子字符串方法

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

如果 len(file) > closebracket : 文件 = 文件[0: openbracket:] + 文件[closebracket + 1::]

【问题讨论】:

  • 为什么不[[apple]].png -> .png
  • 只删除最里面的括号
  • 这个question 可能对你有帮助

标签: python arrays substring square-bracket


【解决方案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

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

【讨论】:

  • 可以使用+*,具体取决于应该如何处理输入'[].png'
  • @jez 好点,我已经做了那个编辑。这似乎是正确的行为。添加注释以防万一...
  • 今天我学到了:你可以把][ 放在[] 里面而不用转义它们(假设它们是按那个顺序排列的,我想)。我不确定是否更难阅读是否有转义......
  • @jez 是的,它看起来很奇怪,排序对于让它工作很重要。关于可读性有点折腾,因为它确实看起来像一个字符集[^],后跟另一个[]...
  • @DumboTheElephant 不用担心 - 我很高兴能帮上忙。
猜你喜欢
  • 1970-01-01
  • 2015-06-10
  • 2012-03-16
  • 2011-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多