删除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我必须把它放回循环中