【发布时间】:2017-05-12 10:04:05
【问题描述】:
希望有人可以帮助我或将我指向具有正确信息的以前的帖子(我已经搜索了一段时间但没有成功),
我对 Python 脚本非常陌生,并且正在花时间学习以提高我的技能,但是我在学习的同时突然需要做以下事情 - 我希望这能帮助我在学习 Python 时更多地了解 Python在别处学习基础知识
我有两个具有相同列数据但标题不同的 CSV - 下面的示例
----$csv1------
ID, FirstName, Surname
1, John, Smith
2, Steve, Davis
, John,Parrot,
4, Dave,Smith
5, Alan, Taylor
----$csv2------
Employee ID, First Name, Given Surname
1, John, Smith
2, Steven, Davis
3, John, Parrott
4, Dave, Allen
6, Mike, Angelo
我的脚本要求是比较 2 个 csv 并使用结果创建第三个文件 (results.csv)
- 如果第 1,2 和 3 列匹配,则使用“正确”将行附加到 results.csv
- 如果第 1 列不匹配,但第 2 和 3 列匹配,则将行追加到 results.csv 中并带有“错误 ID”
- 如果第 2 列不匹配,但第 1 和 3 列匹配,则将行追加到 results.csv 中并带有“错误的名字”
- 如果第 3 列不匹配,但第 1 和 2 列匹配,则将行附加到 results.csv 并带有“错误的姓氏”
- 如果 $csv1 中的整行不在 $csv2 中,则将行附加到 results.csv 中并带有“在 CSV1 中不是 CSV2”
- 如果 $csv2 中的整行不在 $csv1 中,则将行附加到 results.csv 中,并带有“在 CSV2 中不是 CSV1”
我知道这是一个很大的问题,但如果有人能提供一个带有一点解释的脚本来帮助我完成 Python 之旅,我将不胜感激!
谢谢大家。
----添加脚本-----
import csv
CSV1_tuples = []
CSV2_tuples = []
with open("DB1.csv") as CSV2:
csv_CSV2 = csv.reader(CSV2)
for row in csv_CSV2:
CSV2_tuples.append(tuple(row[0:3]))
with open("DB2.csv") as CSV1:
csv_CSV1 = csv.reader(CSV1)
for row in csv_CSV1:
CSV1_tuples.append(tuple(row[0:3]))
if tuple(row[0:3]) in CSV2_tuples:
print(( row[0:3] ), "In both DB1 & DB2")
if tuple(row[1:3]) in CSV2_tuples:
print(( row[0:3] ), "Wrong ID")
【问题讨论】:
-
到目前为止,您为自己解决了这个问题做了什么?请向我们展示您的代码,我们可以帮助改进它。但这不是一个“为你编码”的网站。
标签: python