我正在尝试编写一个函数,从路径列表中删除不需要的路径,这些不需要的路径具有相同的模式,例如c:/project1/main/Node/Accept/*something 这是我的密码
def filtre(list):
for i,item in enumerate(list):
matchObject=re.search(r"(Accept/.*[/])", item) or re.search(r"(Integrate/.*[/])", item)
if matchObject :
list.remove(item)
else:
i=i+1
return list
这是我的全局列表的一个例子:(Input)
c:/project1/main/Node/Accept/testCase1/Browse.c
c:/project1/main/Node/Accept/testCase2/navigate.c
c:/project1/main/Node/Accept/testCase2/save.c
c:/project1/main/Node/Accept/testCase4/search.c
c:/project1/main/Node/Accept
c:/project1/main/Node/Integrate
c:/project1/main/Node/Accept/destroy/fullCoverage/remove.py
c:/project1/main/Tree/Integrate/testCase1/Browse.c
c:/project1/main/Tree/Integrate
期望输出:
c:/project1/main/Node/Accept
c:/project1/main/Node/Integrate
c:/project1/main/Tree/Integrate
我希望是清楚的,删除每一条路径后都会有更多的子节点接受并集成节点。你知道吗
您可以使用以下正则表达式来匹配所需的输出:
如果要删除不必要的路径。。您可以使用以下选项:
Python代码:
见DEMO
您可以使用以下正则表达式:
Demo
在Python中:
如果源代码是字符串列表而不是单个字符串,请将filter与相同的正则表达式一起使用:
你可以通过以下方式来匹配你想要的,而不是匹配你不想要的:
^.*/(Accept|Integrate)$
现在,循环还有另一个问题:不能从正在迭代的列表中删除项!你需要做一个临时的结果列表。你知道吗
由于您似乎想“就地”筛选列表,因此可以使用以下方法:
list[:] = tmp
代码如下:
结果:
相关问题 更多 >
编程相关推荐