python - 匹配两个csv文件之间的数据并替换数据
问题描述
我有两个 csv 文件。首先就像
a, right
b, something
c, right
d, something
第二个文件
b, wrong
e, something
a, wrong
d, something
我想要像这样的输出
b, right
e, something
a, right
d, something
我试过这段代码
import csv
f1 = open("file1.csv")
f2 = open("file2.csv")
csv_f1 = csv.reader(f1)
csv_f2 = csv.reader(f2)
for row1 in csv_f1:
for row2 in csv_f2:
if row1[0] == row2[0]:
print row1[0], row1[1]
else:
print row2[0], row2[1]
解决方案
如果我理解正确的话。您需要逐行比较 csvs。
在这种情况下,您可以使用zip
方式pythoonic
For 循环如下所示
for row1, row2 in zip(csv_f1, csv_f2):
完整代码
import csv
f1 = open("file1.csv")
f2 = open("file2.csv")
csv_f1 = csv.reader(f1)
csv_f2 = csv.reader(f2)
for row1, row2 in zip(csv_f1, csv_f2):
if row1[0] == row2[0]:
print(row1[0], row1[1])
else:
print(row2[0], row2[1])
顺便一提。它在python3
. 你似乎在使用python2
使用 zip_longest
import csv, itertools
f1 = open("file1.csv")
f2 = open("file2.csv")
csv_f1 = csv.reader(f1)
csv_f2 = csv.reader(f2)
for row1, row2 in itertools.zip_longest(csv_f1, csv_f2, fillvalue=[0, 0]):
if row1[0] == row2[0]:
print(row1[0], row1[1])
else:
print(row2[0], row2[1])
推荐阅读
- kotlin - 转换列表
> 列出 > - sql-server - 将“正常”表作为临时表
- python - 如何在结束进程后阻止 Kubernetes pod 重新启动
- python-3.x - tensorflow/stream_executor/cuda/cuda_driver.cc:328] 调用 cuInit 失败:CUDA_ERROR_UNKNOWN:未知错误
- java - 如何在图中找到以某些初始部分路径开头的所有路径?
- mysql - MVC Express + MySQL 返回类型错误:无法读取未定义的属性“showAll”
- vue.js - 如何在 v-tabs 中处理来自多个 v-forms 的数据?
- python - 有没有办法改进 Pandas 中的多个键列选择
- reactjs - 反应中分页功能的重新渲染过多
- python - pandas groupby 计数值超过动态阈值