首先,请记住,我是Python的完整入门者。我一直在努力解决这个问题,整个运气都没有。
这就是我想要做的:
假设我们有两个csv文件:
文件1:
col1;col2
659039;16,9
659038;27,8
659037:36,4
文件2:
col1;col2
659037:36,4
659039;16,9
659038;30
我想在文件2的col1中搜索文件1的col1中的所有项目,如果找到了,并且col2中存在差异,请返回该行。在上述情况下,将仅返回文件2的最后一行,因为其他行是相同的(行号无关紧要)。我只想要与众不同的人。
不好解释。希望你明白我的意思。任何帮助将不胜感激!
答案 0 :(得分:1)
尝试一次做一件事。首先,从file1中提取检查file2所需的所有值,并将它们存储在易于使用的数据结构中。在下面的示例中,我遍历了file1中的所有行,并将内容收集在字典中。具体来说,键来自第一列,值来自第二列。
现在,您可以遍历file2中的每一行,并尝试查找第一列中不存在的内容作为字典中的键的任何行。如果键确实存在,请确保其值不存在匹配第二列。只有当这两个条件都满足时,您才能返回该行。
import csv
fileItems = {}
linesToReturn = []
with open('file1.csv', newline='', encoding='utf-8-sig') as file1:
reader = csv.reader(file1, True)
for row in reader:
fileItems[row[0]] = row[1]
with open('file2.csv', newline='', encoding='utf-8-sig') as file2:
reader = csv.reader(file2, True)
for row in reader:
if fileItems.get(row[0]) != row[1]:
linesToReturn.append(row)
print(linesToReturn)
如果您要使用csv搜索文件,请查看文档here.
答案 1 :(得分:-1)
将您的问题分解为子问题。您可以按照以下步骤使用Pandas框架来实现这一目标-