所以我在网上查看了一个远的exmaples,但它们似乎都认为数据是有序的。因此,两个文件中的第1行具有相同的信息。
在我的情况下,第1行文件X有一个IP和DNS。这个想法是检查这个IP地址是否可以在文件Y的任何一行中找到。
理想情况下,我会得到一个在文件Y中找不到的IP地址列表。
我试图将这些文件导入Pandas,但我的知识到此为止。
编辑:样品
文件1
dns,ip
what.dot.cz.,12.34.21.90
文件2
ip,dns
1.32.20.25,sea.ocean.cz
12.34.21.90 what.dont.cz
试试这个:
df_file1.loc[~df_file1.ip.isin(df_file2.ip)]
您可以使用csv模块和itertools模块来完成此操作。您将加载这两个文件,并使用如下嵌套循环执行线性搜索。这是可行的,但如果csv文件相当大,最好将它们导入sqlite表并在那里执行查询。
import csv
import itertools
file_x = "File X.csv"
file_y = "File Y.csv"
not_found = []
file_x_csv = open(file_x)
file_x_read = csv.DictReader(file_x_csv)
for row_x in file_x_read:
running = True
ip_x = row_x["ip"]
file_y_csv = open(file_y)
file_y_read = csv.DictReader(file_y_csv)
while running:
try:
row_y = next(file_y_read)
if ip_x == row_y["ip"]:
running = False
except StopIteration: # Iterator concluded, search not found
not_found.append(ip_x)
running = False
print(not_found)
我最终使用了cli53,这为我提供了一个非常干净的区域中所有记录的列表。然后,我使用find和replace为所有值添加了一个逗号,并将其导入excel。对于我的特定用例来说,这是最好的解决方案。