用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中如何合並兩個列表


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM