我有两个文件如下,第一个目标是通过比较第一列前14位来获取1.csv和2.csv中不常见的行。
第二个目标是,如果1.csv中的第一列与2.csv中的任何第一列匹配,则将第二列的相同行与1.csv的第二列进行比较,并打印不是存在于1.csv中,存在于2.csv
中脚本如下所示,但无法获得所需的输出
jpa
答案 0 :(得分:0)
如果格式是固定的,那么将每条线分成2个部分是一个解决方案,因此您只能按照您的要求比较前14个数字。
您所拥有的解决方案只进行逐行比较。如果你拆分行,你可以迭代任何一个文件的数据,并使用简单的'in'来查看该行是否在另一个文件中。
答案 1 :(得分:0)
在处理文件时,第一件事总是使用with
,它会减少一行,永远不会忘记关闭文件:
with open('1.csv', 'r') as file1, open('2.csv', 'r') as file2:
file1_lines = file1.readlines()
file2_lines = file2.readlines()
file1_headers = [line[:14] for line in file1_lines]
file2_headers = [line[:14] for line in file2_lines]
with open('update.csv', 'w') as out_file:
# Objective 1: lines that have their first 14 digit in one file only
for line in file1_lines:
if line[:14] not in file2_headers:
out_file.write(line)
for line in file2_lines:
if line[:14] not in file1_headers:
out_file.write(line)
# Objective 2: Lines that are in file 2 but not 1
for line in file2_lines:
if line not in file1_lines:
out_file.write(line)
你的代码在任何地方都没有提到14
,这应该首先提醒你;-)欢呼!