Compare two CSV files and search for similar items(比较两个 CSV 文件并搜索相似项目)
问题描述
所以我有两个 CSV 文件,我试图比较它们并获得相似项目的结果.第一个文件 hosts.csv 如下所示:
So I've got two CSV files that I'm trying to compare and get the results of the similar items. The first file, hosts.csv is shown below:
Path Filename Size Signature
C: a.txt 14kb 012345
D: b.txt 99kb 678910
C: c.txt 44kb 111213
第二个文件masterlist.csv如下所示:
The second file, masterlist.csv is shown below:
Filename Signature
b.txt 678910
x.txt 111213
b.txt 777777
c.txt 999999
如您所见,行不匹配,masterlist.csv 始终大于 hosts.csv 文件.我想搜索的唯一部分是签名部分.我知道这看起来像:
As you can see the rows do not match up and the masterlist.csv is always larger than the hosts.csv file. The only portion that I'd like to search for is the Signature portion. I know this would look something like:
hosts[3] == masterlist[1]
我正在寻找一种解决方案,它将为我提供如下内容(基本上是带有新 RESULTS 列的 hosts.csv 文件):
I am looking for a solution that will give me something like the following (basically the hosts.csv file with a new RESULTS column):
Path Filename Size Signature RESULTS
C: a.txt 14kb 012345 NOT FOUND in masterlist
D: b.txt 99kb 678910 FOUND in masterlist (row 1)
C: c.txt 44kb 111213 FOUND in masterlist (row 2)
我搜索了这些帖子,发现了与此类似的内容 这里 但我不太明白,因为我还在学习python.
I've searched the posts and found something similar to this here but I don't quite understand it as I'm still learning python.
编辑使用 Python 2.6
Edit Using Python 2.6
推荐答案
虽然我的解决方案工作正常,但请查看下面 Martijn 的答案以获得更有效的解决方案.
While my solution works correctly, check out Martijn's answer below for a more efficient solution.
您可以在这里找到python CSV模块的文档.
You can find the documentation for the python CSV module here.
你正在寻找的是这样的:
What you're looking for is something like this:
import csv
f1 = file('hosts.csv', 'r')
f2 = file('masterlist.csv', 'r')
f3 = file('results.csv', 'w')
c1 = csv.reader(f1)
c2 = csv.reader(f2)
c3 = csv.writer(f3)
masterlist = list(c2)
for hosts_row in c1:
row = 1
found = False
for master_row in masterlist:
results_row = hosts_row
if hosts_row[3] == master_row[1]:
results_row.append('FOUND in master list (row ' + str(row) + ')')
found = True
break
row = row + 1
if not found:
results_row.append('NOT FOUND in master list')
c3.writerow(results_row)
f1.close()
f2.close()
f3.close()
这篇关于比较两个 CSV 文件并搜索相似项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:比较两个 CSV 文件并搜索相似项目


基础教程推荐
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 筛选NumPy数组 2022-01-01