在比較CSV文件中的行時,我偶然發現了問題。Python - 用csv.DictReader忽略len()中的空單元格
我可以使用csv.reader與len(),它工作得很好,但我然後我必須排序關鍵的文件。
我有獨特的鑰匙,所以我想用DictReader但LEN()似乎在字典閱讀所有的值,包括空單元:
with open (baseline, 'r') as baselineF:
readBaseline=csv.DictReader(baselineF, delimiter=',', quotechar='"')
for rowb in readBaseline:
print('rowb: ',len(rowb))
with open (tested, 'r') as testedF:
readTested=csv.DictReader(testedF, delimiter=',', quotechar='"')
for rowt in readTested:
print ('rowt: ', len(rowt))
# Rows are the same len
if len(rowb)==len(rowt):
writerSameOracle.writerow(rowb)
writerSameHPCC.writerow(rowt)
print ('Rows are the same')
break
有了這個代碼,即使行具有相同數量的填充細胞的它似乎將len()=返回到每個文件中的標題數量。
他們都不工作: ** 1 ** LEN(過濾器(布爾,rowB中) 打印( '\ nrowb:',LEN(過濾器(布爾,rowB中))) 類型錯誤:對象('x'在x中的x,如果x!= None]))總會產生lan = to number of鍵/標題 @ 2rs2ts – Vic152
在評論中閱讀代碼非常困難;要麼編寫它,以便可以在同一行中閱讀程序,或編輯問題以包括如何根據我的答案更改代碼。 ,這兩項工作都是有效的,所以你做錯了什麼,或許你有影子'過濾器'。也許你不想使用'x!= None',而只是按照我的建議使用'x'的真實性。也許你沒有正確使用過濾列表的長度。你應該提供示例輸入和預期的輸出(與實際輸出相比)。 – 2rs2ts
啊,我的歉意,我忘了filter()在Python 3中有它自己的返回類型。我仍然使用Python 2.讓我調整我的答案。 – 2rs2ts