Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较两个列表是从python中的文件加载的_Python - Fatal编程技术网

比较两个列表是从python中的文件加载的

比较两个列表是从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:

我有两份文件

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: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?