2 回答

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊
它不會(huì)被忽略,只是您的條件始終為真,因此您不會(huì)過濾掉任何內(nèi)容。
re.search如果找到某對(duì)象,則返回匹配對(duì)象,否則返回一個(gè)匹配對(duì)象None。無論哪種方式,都不會(huì)成為的元素dirs,因?yàn)閐irs它只是一個(gè)字符串列表。因此,您的所有測(cè)試始終都是正確的。
不必檢查搜索不在其中dirs,而只需檢查它是否不正確。(匹配對(duì)象始終是真實(shí)的,并且None始終是虛假的。)
另外,在解決此問題之后,我非常確定您希望將所有測(cè)試失敗的值保留在其中,但是您使用or而不是and,這意味著您將在所有測(cè)試失敗的值保留在其中。
所以:
dirs[:] = [dir for dir in dirs
if not re.search(r'\bEXP\b', dir)
and not re.search(r'\b3.2\b', dir)
and not re.search(r'\w+(?:-\w+)+', dir)]
或者,如果更容易理解(相反),而不是將所有值都保留在所有測(cè)試失敗的地方,而是將所有值保留在所有測(cè)試都不成立的地方:
dirs[:] = [dir for dir in dirs if not (
re.search(r'\bEXP\b', dir) or
re.search(r'\b3.2\b', dir) or
re.search(r'\w+(?:-\w+)+', dir))]
添加回答
舉報(bào)