【发布时间】:2021-03-31 16:00:23
【问题描述】:
我正在尝试创建一个“SuperList”类,它是一个带有 del_all() 方法的列表。当我尝试使其与正则表达式一起工作时,del_all() 方法根本不会删除任何内容。
这是我当前的代码:
import re
class SuperList(list):
def __init__(self, seq):
list.__init__(self, seq)
self.seq = list(seq)
def del_all(self, item="", regex=None):
if item not in self.seq:
if not regex:
raise ValueError("item not in list")
else:
for i in range(len(self.seq)):
if re.match(re.compile(regex), self.seq[i]):
self.seq.remove(self.seq[i])
else:
if not regex:
while item in self.seq:
self.seq.remove(item)
else:
for i in range(len(self.seq)):
if re.match(regex, self.seq[i]):
self.seq.remove(self.seq[i])
super_list = SuperList(["A", "b", "f", "Y"])
super_list.del_all(regex=re.compile("[A-Z]]"))
print(super_list.seq)
这里的预期输出是 ["b", "f"]。但相反,我得到 [“A”,“b”,“f”,“Y”]。如何修复我的代码?
【问题讨论】:
标签: python python-3.x regex python-re