比较两个列表是从python中的文件加载的
我有两份文件 file1.txt比较两个列表是从python中的文件加载的,python,Python,我有两份文件 file1.txt 2C:E4:12:B2:EC:4B;20120731_10:06:36;20151005_13:44:51;195.116.227.97 2C:E4:12:B2:26:E0;20120902_21:48:58;20151005_17:01:10;195.116.227.97 E8:BE:81:87:76:10;20131006_20:23:44;20151004_23:56:37;195.116.227.97 ..... file2.txt C8:91:F9:
2C:E4:12:B2:EC:4B;20120731_10:06:36;20151005_13:44:51;195.116.227.97
2C:E4:12:B2:26:E0;20120902_21:48:58;20151005_17:01:10;195.116.227.97
E8:BE:81:87:76:10;20131006_20:23:44;20151004_23:56:37;195.116.227.97
.....
file2.txt
C8:91:F9:98:13:4B;2015/09/24 13:30:53
E8:BE:81:87:76:10;2015/09/24 13:30:41
7C:03:D8:3A:BF:14;2015/09/24 13:32:35
18:1E:78:E9:6E:C6;2015/09/24 13:33:46
.....
如果file1中的第一列(mac)在file2中,我希望从file2中获取all行并打印,因此在这种情况下输出为:
E8:BE:81:87:76:10;2015/09/24 13:30:41
我不知道如何在python中比较列表
我的代码:
#!/usr/bin/env python
list = {}
list1 = {}
file = open('file.txt','r')
for line in file:
mac,first,last,ip = line.split(';')
list = mac
file1 = open('file1.txt','r')
for line in file1:
mac,data = line.split(';')
list1 = mac,data
# ........
现在是什么?首先将文件1中的所有MAC地址存储在一个集合中;现在,您可以针对该集测试第二个文件:
with open('file1.txt', 'r') as inf:
mac_addresses = {line.partition(';')[0] for line in inf}
with open('file2.txt', 'r') as inf:
for line in inf:
if line.partition(';')[0] in mac_addresses:
print(line.strip())
我使用集合理解来构建mac\u地址
set;文件中的每一行都被拆分(使用str.partition()
,仅在第一个分隔符上拆分会稍微快一点),并且只保留第一个元素
需要调用
str.strip()
来删除每行后面的换行符。或者,如果在Python3上,使用print(line,end='')
为什么要将名称初始化为空字典?!另外,不要在自己的列表中使用名称list
。如果您的问题是“如何比较两个列表?”,那么<代码>列表1==列表2?