删除Python中具有相同域的所有项

删除Python中具有相同域的所有项,python,python-3.x,Python,Python 3.x,我有以下数组: array = [ 'javi@indaloymedia.com', 'caroline@grupoplatinum.com' ] 然后我有以下文件: javi@indaloymedia.com asdsd@indaloymedia.com jasdasd@indaloymedia.com caroline@grupoplatinum.com asdasde@grupoplatinum.com wata@man.com 如何消除域为'indaloymedia.

我有以下数组:

array = [
    'javi@indaloymedia.com',
    'caroline@grupoplatinum.com'
]
然后我有以下文件:

javi@indaloymedia.com
asdsd@indaloymedia.com
jasdasd@indaloymedia.com
caroline@grupoplatinum.com
asdasde@grupoplatinum.com
wata@man.com
如何消除域为'indaloymedia.com'和grupoplatinum的数组中的所有元素,也就是说,文件如下所示:

wata@man.com

最简单的方法是:

blacklist = [
    'javi@indaloymedia.com',
    'caroline@grupoplatinum.com'
]

domains = [e.split('@')[-1] for e in blacklist]

filtered_emails = []
with open("emails.txt") as f:
    for line in f:
      line = line.strip()
      domain = line.split('@')[-1]
      if domain not in domains:
        filtered_emails.append(line.strip())

print(filtered_emails)
请注意,这个解决方案不会涵盖所有的情况,但应该足以让您开始


此外,如果您的黑名单很大,域应该是一个集合,而不是一个快速查找的列表。

仅使用基本for循环和if语句:

def remove_domains(addresses, blacklist):
    for a in addresses:
        for b in blacklist:
            if b in a:
                addresses.remove(a)
    return a

你能分享你的代码并解释为什么它不能解决你的问题吗?首先处理数组以提取你想要过滤的域名。把它们放在一起。然后读取文件,只写那些不在set.use list comprehenseve数组中的行=[x for x in array if not x.endswith'indaloymedia.com'和not x.endswith'grupoplatium.com']这对我没有帮助,因为如果我添加了另一个域,例如juan@meramira.com我必须把它放回循环中