python - 在Python 3中创建一个脚本来比较两个CSV并将两者之间的异同输出到另一组CSV中

标签 python mysql csv compare

我有两个 CSV,理想情况下这些 CSV 将包含相同的数据,但实际上有时内容可能会有所不同。我不是手动浏览两个 CSV 并找出相同和不同的内容,而是尝试创建一个 Python 脚本,每周运行该脚本来告诉我什么相同、什么不同。

逻辑是这样的。 1. 给定 2 个 CSV 2. 逐行比较它们。 3. 两个 CSV 之间的任何不同行都应记录到另一个 CSV 中(整行) 4. CSV 之间任何相同的行都应记录到另一个 CSV 中(整行)。

这将帮助我直观地了解差异并采取相应的行动。

下面是我正在寻找的示例。

enter image description here

下面的代码是我到目前为止所拥有的

with open('Excel 1.csv', 'r') as csvOne, open('Excel 2.csv', 'r') as csvTwo:
    csvOne = csvOne.readlines()
    csvTWO = csvTWO.readlines()

 with open('resultsSame.csv', 'w') as resultFileSame:
     for row in csvTWO:
         if row not in csvONE:
            resultFileSame.write(row)

 with open('resultsDifference.csv', 'w') as resultFileDifference:
     for row in csvTWO:
         if row in csvONE:
             resultFileDifference.write(row)

我希望脚本比较行,并且仅当行之间存在相似性或差异时才输出到另一组 CSV 中。上面的代码有效,但它删除了一个 CSV 中的列,而不是其他 CSV 中的列,也不是行。我想保留这些列,即使它们不在另一个 CSV 中,并且只向我显示单独的 CSV 中的一个或另一个中的角色。

请在下面查看我在数据集示例中运行您提供的第一个代码时得到的结果。

resultsSame.cSV resultsDifference.CSV

如果你看看上面的内容,我似乎不太明白你是如何得到你的输出的,因为这正是我想要的!老实说,我不需要打印出标题,因为我也在比较这些标题,有时由于用户错误,它们可能会结束不同的标题。

Printed df1 and df2

最佳答案

这是您的代码的修改版本。

with open('excel1.csv', 'r') as csvOne, open('excel2.csv', 'r') as csvTwo:
  csvONE = csvOne.readlines()
  csvTWO = csvTwo.readlines()

with open('resultsDifference.csv', 'w') as resultFileDifference:
 # Write the header to difference file. 
 # Because, the headers are same for 2 input CSVs, the header row will be obviously into resultsSame.csv
 resultFileDifference.write(csvONE[0])
 for row in csvTWO:
     if row not in csvONE:
        resultFileDifference.write(row)

with open('resultsSame.csv', 'w') as resultFileSame:
 for row in csvTWO:
     if row in csvONE:
         resultFileSame.write(row)

关于python - 在Python 3中创建一个脚本来比较两个CSV并将两者之间的异同输出到另一组CSV中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47474986/

相关文章:

python - 用python计算数据字符串中的nan

php - mysql PDO如何绑定(bind)LIKE

php - mysql中如何将一列中的属性值与另一列中的每个人进行比较?

python - 按列对csv进行排序

php - 如果项目已经存在,如何重写相同的mysql表行?

python - Google应用程序引擎和Python以及按值传递的对象

python - 在 Django/Algorithm 中复制模型实例及其相关对象以递归地复制对象

python - 使用 matplotlib/python 设置绘图轴限制时出现问题

java - 在 MySQL 的选择查询中将 VARBINARY 值转换为字符串?

python - pd.read_csv 的小数问题