使用嵌套 for 循环从另一个文件中的一个文件中搜索特定值

问题描述

我有两个文件文件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)

知道代码中可能有什么问题吗,或者是否有其他方法可以做到这一点?

编辑:添加文件A和文件B的格式

文件 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")

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...