将2文件中的var与只匹配一些var的python组合

2024-09-30 22:18:13 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将两个文件合并为只有一些匹配变量和具有匹配的打印

file1.txt

email@email.com b5c2eac4f288490166fe508d77652aea:R7pnHzu94YC81ZYGxtbKyWHzHbF3err0
email@email.com b850c37a676df2cba45a70917be69737:w4YcDLcGb1EP3FMszaChlc1ISJ4WMKmc
email@email.com 34e29d789d455d8b2c0dd2678fbe52cf:k5htfMNJRgQFJ85u9X5Tzw9yoUVZtvpx

file2.txt

b5c2eac4f288490166fe508d77652aea:R7pnHzu94YC81ZYGxtbKyWHzHbF3err0:123456x
b850c37a676df2cba45a70917be69737:w4YcDLcGb1EP3FMszaChlc1ISJ4WMKmc:12345678x
3bb3c0d55eee3da5a437cba2280a5a51:WZcwgstCh3Ku8pxgx32xtluzHPvupxzb:54321

输出

email@email.com:123456x
email@email.com:12345678x

试码

with open('file1.txt') as file1, open('file2.txt') as file2:
for line in file1:
   data = line.split(" ")  
   md5  = data[1].strip()
   email = data[0].strip()
for line2 in file2:
        data2 = line.split(":")
        passwd = data2[1].strip()
        if data2[0].strip() == md5:

Tags: txtcomdataemailaslineopenfile1
1条回答
网友
1楼 · 发布于 2024-09-30 22:18:13

您将需要以下内容

它包括三个步骤:

  1. 迭代第一个文件,将电子邮件放入字典中,使用MD5作为密钥
  2. 迭代第二个文件,检查MD5是否出现在字典中,将输出行添加到output列表中
  3. 通过连接行,将output列表写入输出文件
emails = {}
output = []

with open('file1.txt') as f:
    for line in f:
        email, md5 = line.split()
        emails[md5] = email

with open('file2.txt') as f:
    for line in f:
        md5, passwd = line.strip().rsplit(':', 1)
        if md5 in emails:
            output.append(f'{emails[md5]}:{passwd}\n')

with open('output.txt', 'w') as f:
    f.write(''.join(output))

注意:在第二种情况下,您只需要strip()(使用rstrip())来删除任何可能的前导/尾随空格和换行符。它在第一个split()中是不必要的,因为没有参数的split()将为您处理此问题

请注意,第一个文件的split()没有参数,这就足够了,因为默认拆分是在空白处完成的

对于第二个文件中的split(),我们改用rsplit,因为我们在:上拆分,希望前两个字段合并为一个

相关问题 更多 >