Python:检查字符串是否在列表中的任何项中?

2024-10-02 10:29:31 发布

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

我有一个server_list,我正在解析文件中的电子邮件地址。我想收集所有不是来自某些服务器的地址,例如。gmail.com. 你知道吗

目前,我在文件读取循环中有以下内容:

server_list = ["gmail.com", "yahoo.com"] #etc
for servers in server_list:
   if servers in emailaddress: #get emailaddress from inside of a open(file) line loop
        badmail.extend(emailaddress)

这样我就可以在列表badmail中收集坏邮件。有没有办法创建一个好邮件列表,即如果emailaddress不包含在同一循环中server_list的任何项目中,或者我必须创建一个所有邮件的列表并删除坏邮件?你知道吗


Tags: 文件in服务器com列表server电子邮件地址
1条回答
网友
1楼 · 发布于 2024-10-02 10:29:31

您可以使用^{}函数来确保emailaddress不会以server_list中的任何服务器结尾,如下所示

server_list, good_email = ["gmail.com", "yahoo.com"], []
if all(not emailaddress.endswith(server) for server in server_list):
    good_email.append(emailaddress)

同样,您可以使用^{}函数来获取错误的电子邮件地址,如下所示

server_list, bad_email = ["gmail.com", "yahoo.com"], []
if any(emailaddress.endswith(server) for server in server_list):
    bad_email.append(emailaddress)

你正在阅读的电子邮件地址看起来像。所以,你可以这样做

server_list, good_list, bad_list = ["gmail.com", "yahoo.com"], [], []
with open("email.txt") as in_file:
    for email_address in in_file:
        email_address = email_address.rstrip()
        if any(email_address.endswith(server) for server in server_list):
            bad_list.append(email_address)
        else:
            good_list.append(email_address)

根据^{}'s suggestion,我们实际上可以将一个数据元组传递给^{}。因此,代码可以进一步简化为

server_list, good_list, bad_list = ("gmail.com", "yahoo.com"), [], []
...
...
if email_address.endswith(server_list):
    bad_list.append(email_address)
else:
    good_list.append(email_address)

相关问题 更多 >

    热门问题