我有两个长列表,一个来自一个日志文件,其中包含格式如下的行
201001050843 blah blah blah <email@site.com> blah blah
以及 csv 格式的第二个文件。我需要生成 file2 中不包含日志文件中电子邮件地址的所有条目的列表,同时保持 csv 格式。
示例
日志文件包含:
201001050843 blah blah blah <email@site.com> blah blah
201001050843 blah blah blah <email2@site.com> blah blah
文件 2 包含:
156456,bob,sagget,email@site.com,4564456
156464,bob,otherguy,email@anothersite.com,45644562
输出应该是:
156464,bob,otherguy,email@anothersite.com,45644562
目前我从日志中获取电子邮件并将它们加载到另一个列表中:
sent_emails =[]
for line in sent:
try:
temp1= line.index('<')
temp2 = line.index('>')
sent_emails.append(line[temp1+1:temp2])
except ValueError:
pass
然后与 file2 比较:
lista = mail_lista.readlines()
for line in lista:
temp = line.split()
for thing in temp:
try:
if thing.index('@'):
if thing in sent_emails:
lista.remove(temp)
except ValueError:
pass
newa.writelines(lista)
或者:
for line in mail_listb:
temp = line.split()
for thing in temp:
try:
if thing.index('@'):
if thing not in sent_emails:
newb.write(line)
except ValueError:
pass
但是,两者都返回所有 file2!
谢谢你提供的所有帮助。
编辑:感谢您对套装的建议,它产生的速度差异比我想象的要大。去哈希表的方法!从现在开始,我肯定会更频繁地使用套装。