【发布时间】:2017-11-24 14:07:41
【问题描述】:
我有两个 CSV,理想情况下,CSV 将包含相同的数据,实际上有时内容可能会有所不同。我没有手动浏览这两个 CSV 并找出相同和不同之处,而是尝试创建一个我将每周运行的 python 脚本,它会告诉我哪些相同,哪些不同。
这是逻辑。 1. 给定 2 个 CSV 2.逐行比较。 3. 两个 CSV 之间的任何不同行都应记录到另一个 CSV(整行/秒) 4. CSV 之间的任何相同行都应记录到另一个 CSV(整行)中。
这将帮助我直观地了解不同之处并采取相应措施。
以下是我正在寻找的示例。
下面的代码是我目前所拥有的
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 中显示一个或另一个中的角色。
请在下面查看我在您的数据集示例上运行您给出的第一个代码时得到的结果。
如果您查看以上内容,我似乎无法弄清楚您是如何获得输出的,因为这正是我想要的!老实说,我也不需要打印标题,因为我也在比较它们,它们有时会由于用户错误而结束。
【问题讨论】: