做了個問卷,下載了收集數據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庫讀和寫,邏輯正確就肯定沒問題。
當然機器做事不會出錯,使用機器並不意味着人的能力的低下。