问题描述
我有两个文件,文件A.txt有数百行格式(ip,mac),文件B.txt有数百行格式(mac)。我正在寻找的是从文件 A 中的文件 B 中搜索 (macs),如果发现从文件 A 中打印行 (ip,mac)。这两个文件之间已经有 100 多个 mac 匹配,但使用代码我写的它只返回第一个匹配项。
下面是我的简单代码
with open("B.txt","r") as out_mac_file,open("A.txt","r") as out_arp_file:
for x in out_mac_file:
for y in out_arp_file:
if x in y:
print(y)
知道代码中可能有什么问题吗,或者是否有其他方法可以做到这一点?
文件 B
64167f18cd3d
64167f18c77a
64167f067082
64167f0670b5
64167f067400
64167f0674e5
64167f06740d
文件 A
10.55.14.160,64167f869f18
10.55.20.59,64167f37a5f4
10.55.20.62,64167f8866e0
10.55.20.65,64167f8b4bd8
10.55.20.66,64167f372a72
10.55.20.67,64167f371436
解决方法
如果您可以使用 Pandas(因为您的数据采用昏迷分隔格式):
import pandas as pd
a = pd.read_csv("A.txt",header=None,names=["mac"])
b = pd.read_csv("B.txt",names=["ip","mac"])
for mac in a["mac"]:
result = b[b["mac"] == mac]
if len(result) > 0:
print (result)
或者只是一个单行而不是一个循环:
b.merge(a,on="mac")