此脚本的第一个目标是将第1列中的前14位数字放在两个文件(1.csv
和2.csv
)中。 1.csv
具有正确的记录映射,其中2.csv
几乎没有匹配的记录,因此比较两个文件中column1的前14位数字并获取不唯一的记录,这是通过脚本完成的。
第二个目标,即没有完成,例如我在1.csv
中有一条记录,第一列和第二列的相同记录在2.csv
中,另一条记录第一列相同和第二列不同的列,我希望此行也打印在输出中。
脚本是:
import csv
import sys
with open('1.csv', 'r') as csv1, open('2.csv', 'r') as csv2:
csv1_lines = csv1.readlines()
csv2_lines = csv2.readlines()
csv1_headers = [line[:14] for line in csv1_lines]
csv2_headers = [line[:14] for line in csv2_lines]
with open('output.csv', 'w') as out_file:
for line in csv2_lines:
if line[:14] not in csv1_headers:
out_file.write(line)
答案 0 :(得分:0)
我怀疑你可能实际上想要这样的东西:
import csv
import io
file_1 = io.StringIO('''
1111111111111111:xxxxxxxxxxxxxxx
2222222222222222:yyyyyyyyyyyyyyy
3333333333333333:zzzzzzzzzzzzzzz
'''.strip())
file_2 = io.StringIO('''
1111111111111111:xxxxxxxxxxxxxxx
1111111111111110:xxxxxxxxxxxxxxx
1111111111111123:xxxxxxxxxxxxxxx
11111111111111:xxxxxxxxxxxxxxx
2622222222222222:yyyyyyyyyyyyyyy
2222222222222222:yyyyyyyyyyyyret
2222222222222222:yyyyyyyyyyyyyyy
4444444444444444:ppppppppppppppp
'''.strip())
good_reader = csv.reader(file_1, delimiter=':')
match_reader = csv.reader(file_2, delimiter=':')
good_values = [row for row in good_reader]
for row in match_reader:
if row not in good_values:
print(row)
但是,它并没有提供您建议您期望的相同输出。那么也许你真的想要这个?
good_values = [(row[0][:14], row[1]) for row in good_reader]
for row in match_reader:
if (row[0][:14], row[1]) not in good_values:
print(':'.join(row))