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

标签 python string list

我有一个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)

这使我能够将不良电子邮件收集到坏邮件列表中。有什么方法可以创建一个好的电子邮件列表,即如果 emailaddress 不包含在同一循环中的 server_list 中的任何项目中,或者我是否必须创建所有电子邮件的列表电子邮件并删除不良电子邮件?

最佳答案

您可以使用all函数以确保电子邮件地址不以 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)

同样的方式,你可以使用 any函数获取错误的电子邮件地址,如下所示

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)

根据 lvc's suggestion ,我们实际上可以将一个数据元组传递给 str.endswith 。所以,代码可以进一步简化为

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)

关于Python:检查字符串是否在列表中的任何项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23338557/

相关文章:

ios - 传递和检索核心数据 - Swift 中的 NSArray 元素问题

java - 是否有静态类型和可变长度的 Java 数组/列表

python - 如何从列表中查找对象

php - 检查行是否包含字符串中的子字符串

python - 将字典重置为空字典不会释放内存吗?

python - 如何将python元组转换为二维表?

python - 无法使按钮(使用 tkinter 创建)自动退出

JavaScript 搜索特定字符串

javascript - 使用 jQuery.data 存储项目列表

python - pip 可编辑安装在只读文件系统上