用python比对csv文件中的数据

做了个问卷,下载了收集数据xlsx文件,把数据弄到另一个表格文件中,需要校验数据转移的准确性。
使用python的csv库,使用csv.reader(f)函数读取表格数据,转成列表,确定数据行的主键,将主键作为字典的一个键,键的值是该行其他数据。
通过这次编程学到了python的dict类型添加键时直接[一个不曾存在的键],合并列表时直接用加号衔接。[1]+[2] ==> [1, 2]
下面贴出代码:

import csv

with open('a.csv') as f:
	reader = csv.reader(f)
	# print(list(reader))
	# input()
	als = list(reader)

with open('b.csv') as f:
	reader = csv.reader(f)
	# print(list(reader))
	bls = list(reader)

bdict = {}
for b in bls[1:]:
	if b[2] == '':
		continue
	bdict[b[2]] = [b[i] for i in [1]+list(range(4, 13))]

adict = {}
for a in als[1:]:
	adict[a[10]] = [a[i] for i in [9]+list(range(11, 20))]

for a in als[1:]:
	a_ls = adict[a[10]]
	b_ls = bdict[a[10]]
	b_wrong = False
	for i in range(len(a_ls)):
		if i in [1, 8]:
			if b_ls[i] not in a_ls[i]:
				b_wrong = True
				a_str = a_ls[i]
				b_str = b_ls[i]
		else:
			if b_ls[i] != a_ls[i]:
				b_wrong = True
				a_str = a_ls[i]
				b_str = b_ls[i]
		if b_wrong:
			print('%s的%s和%s不一致'%(a[10], a_str, b_str))
			break

其实用不着校验,在转移数据的时候使用csv库读和写,逻辑正确就肯定没问题。

当然机器做事不会出错,使用机器并不意味着人的能力的低下。

参考链接

1

【Python】Python处理csv文件

2

python中如何合并两个列表

posted @ 2020-08-31 12:05  园糯  阅读(1538)  评论(0编辑  收藏  举报