Python从列表中删除项目

use*_*906 6 python

我是Python新手,只是在努力工作,因为团队中的另一个人离开了,需要在线上工作,所以如果这是一个愚蠢的问题,请道歉.

我需要从列表中删除项目(它们将包含某个短语)并使用Google搜索并尝试了一些方法,但它似乎不起作用.

我目前得到的是,

def get_and_count_card_files(date):
    # Retrieve the DC and SD card files
    dc_files = dc_card_files.get_dc_files(dc_start_location, date)
    sd_files = sd_card_files.get_sd_files(sd_start_location)
    print(dc_files)

if '*NoCover*' in dc_files:
    dc_files.remove('*NoCover*')
Run Code Online (Sandbox Code Playgroud)

Dc_files是列表(文件名串),我需要删除文件名中包含NoCover的任何内容.它确实存在,因为打印功能告诉我它.

任何人都知道我做错了什么

在此输入图像描述

Sim*_*ser 7

使用这段代码,*不会在这些上下文中执行glob或正则表达式:

if '*NoCover*' in dc_files:
    dc_files.remove('*NoCover*')
Run Code Online (Sandbox Code Playgroud)

所以最好说:

if 'NoCover' in dc_files:
Run Code Online (Sandbox Code Playgroud)

但是,我们必须在列表中找到要删除的正确条目,而不使用通配符.

对于一个小列表,您可以迭代它.列表理解会做:

new_dc_files = [dc for dc in dc_files if 'NoCover' not in dc]
Run Code Online (Sandbox Code Playgroud)

这是一种紧凑的说法:

new_dc_files = list()
for dc in dc_files:
    if 'NoCover' in dc:
         continue
    new_dc_files.append(dc)
Run Code Online (Sandbox Code Playgroud)