根据包含垃圾邮件术语的元素从列表中筛选元素

2024-09-28 05:19:15 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我制作了一个脚本,可以搜集一些网站并建立一个结果列表。每个结果具有以下结构:

result = {'id': id,
            'name': name,
            'url': url,
            'datetime': datetime,
        }

我想根据名称中的垃圾邮件术语从结果列表中筛选结果。我定义了以下函数,它似乎可以过滤某些结果,但不是所有结果:

def filterSpamGigsList(theList):
    index = 0
    spamTerms = ['paid','hire','work','review','survey',
                 'home','rent','cash','pay','flex',
                 'facebook','sex','$$$','boss','secretary',
                 'loan','supplemental','income','sales',
                 'dollars','money']
    for i in theList:
        for y in spamTerms:
            if y in i['name'].lower():
                theList.pop(index)
                break        
            index += 1
    return theList

任何线索,为什么这可能不是过滤掉所有结果,其中包含这些垃圾邮件条款?也许我需要在调用.lower()之后调用.split(),因为有些名称是短语


Tags: namein脚本名称idurl列表for
1条回答
网友
1楼 · 发布于 2024-09-28 05:19:15

我猜你有一个问题,即在Jakub建议的迭代过程中就地修改列表

最可怕的方法是返回一个新的列表。为了便于阅读,我将其分为两个函数:

def is_spam(value):
    spam_terms = ['paid','hire','work','review','survey',
                 'home','rent','cash','pay','flex',
                 'facebook','sex','$$$','boss','secretary',
                 'loan','supplemental','income','sales',
                 'dollars','money']
    for term in spam_terms:
        if term in value.lower():
            return True
    return False

def filter_spam_gigs_list(results):
    return [i for i in results if not is_spam(i['name'])]

相关问题 更多 >

    热门问题