【问题标题】:Python: removing old records and duplicates between two CSV filesPython:删除两个 CSV 文件之间的旧记录和重复项
【发布时间】:2017-03-01 03:26:46
【问题描述】:

Python 初学者,完成任务需要帮助!

我有两个 csv 文件。 old.csv 和 new.csv

两者具有相同的结构(A 到 Z 列),并且每条记录在 F 列(第六列)中都有一个唯一标识符,即数字。在这两个 CSV 之间有一些重复记录。

我正在寻找一种方法来消除也存在于 old.csv 中的记录,从 new.csv 并输出到具有相同结构的新文件,因此新的 output.csv 确实只有新的记录。

有什么好的方法来实现这一点?我需要能够通过命令行在 Windows 机器上运行它。

任何帮助表示赞赏!提前致谢!

【问题讨论】:

  • 您需要删除new.csv中的重复标识符并输出到另一个文件吗?我说的对吗?
  • 是的,没错

标签: python csv


【解决方案1】:

读取 csv 文件并将其映射到元组

import csv

f = open('old.csv', 'rb')
reader = csv.reader(f)
reader =  map(tuple,reader)

fn = open('new.csv', 'rb')
readern = csv.reader(fn)
readern = map(tuple,readern)

获取 old.csv 中的所有唯一标识符

from operator import itemgetter
reader= map(itemgetter(5), reader)

添加标识符不在old.csv中的所有项目,将它们添加到唯一列表中

unique= [item for item in readern if item[5] not in reader]

将行写入 output.csv

output = open("output.csv", 'wb')
wr = csv.writer(output)
for row in unique:
        wr.writerow(row)
output.close()

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    一个简单的方法是:

    • 从一组old.csv中收集所有标识符
    • 遍历 new.csv
    • 如果记录的标识符在您的集合中为 noz,则将其写入 output.csv

    您可能希望使用csv 模块来读取和写入文件。

    【讨论】:

      猜你喜欢
      • 2020-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      • 2015-01-03
      相关资源
      最近更新 更多