gpt4 book ai didi

python - 如何根据单独列表中每个字符串内的子字符串获取两个列表之间的差异

转载 作者:行者123 更新时间:2023-12-01 06:18:20 26 4
gpt4 key购买 nike

我有两个长列表,一个来自日志文件,其中包含格式类似于

的行

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 的全部内容!

感谢您提供的任何帮助。

编辑:感谢您对套件的建议,它产生的速度差异比我想象的要大。哈希表真是太棒了!从现在开始我肯定会更频繁地使用集合。

最佳答案

您可以像以前一样创建一组电子邮件,然后:

# emails is a set of emails
for line in fileinput.input("csvfile.csv",inplace =1):
parts = line.split(',')
if parts[3] not in emails:
print line

仅当 CSV 文件中的电子邮件始终位于位置 4 时,此方法才有效。

fileinput启用就地编辑。

并使用一组电子邮件而不是 Aaron 所说的列表,不仅是因为速度,而且还可以消除重复。

关于python - 如何根据单独列表中每个字符串内的子字符串获取两个列表之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2007755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com