我只需要打印出“333-33”的不匹配项。当我运行以下代码时,它会打印所有项目,例如“111-11”、“222-22”、“333-33”...
"333-33" 应该返回 None 类型...
有什么建议吗?预先非常感谢您。
ALLOW_LIST = ["(4[0-4]{2})-\d{2}", "111-11", "222-22"]
item=[]
codes = ["111-11", "222-22", "333-33"]
for code in codes:
for i in ALLOW_LIST:
if re.search(i, code) is None:
item.append(code)
print(item)
答案 0 :(得分:1)
您可以将 class MySerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = ('timestamp', 'col1', 'col2')
函数与迭代 all
的生成器表达式一起使用,以确保在输出之前没有任何模式与当前的 ALLOW_LIST
匹配:
code
答案 1 :(得分:0)
据我所知,您只想包含与允许列表匹配的项目。
您的 if 语句将附加不匹配的项目:if re.search(i, code) is None:
您应该编辑 if 语句以包含匹配的项目:
ALLOW_LIST = ["(4[0-4]{2})-\d{2}", "111-11", "222-22"]
item=[]
codes = ["111-11", "222-22", "333-33"]
for code in codes:
for i in ALLOW_LIST:
if re.search(i, code):
item.append(code)
print(item)
答案 2 :(得分:0)
你可以在这里形成一个单一的正则表达式:
ALLOW_LIST = ["4[0-4]{2}-\d{2}", "111-11", "222-22"]
regex = r'^(?:' + '|'.join(ALLOW_LIST) + r')$'
items = []
codes = ["111-11", "222-22", "333-33"]
for code in codes:
if not re.search(regex, code):
items.append(code)
print(items) # ['333-33']