У меня два длинных списка, один из файла журнала, который содержит строки, отформатированные как
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
Однако оба возвращают весь файл2!
Спасибо за любую помощь, которую вы можете оказать.
РЕДАКТИРОВАТЬ: Спасибо за рекомендации для наборов, он сделал большую разницу в скорости, чем я думал бы возможным. Путь к хэш-таблицам! С этого момента я буду использовать наборы чаще.