我有一個由'|'分隔的CSV。我正在嘗試讀取CSV,按第8列進行排序,並將排序後的數據作爲標準CSV輸出到標準輸出。問題是輸入CSV中的某些行沒有8列。那些沒有第8列的行可以完全跳過。現在,當它碰到沒有列8的行時,它會拋出錯誤「列表索引超出範圍」。如果我能夠繼續並忽略這一行,那將是完美的。Python排序()跳過帶空行的行
任何幫助,將不勝感激。當然願意完全改變代碼塊。
with open(sys.argv[1]) as openFile:
reader = csv.reader((x.replace('\0','') for x in openFile), delimiter='|')
col = 8
sortedReader = sorted(reader, key=lambda k: (k[col] is None, k[col] == "", k[col]), reverse=True) # This was my attempted solution found on Google/StackOverflow. Does not work.
csvout = csv.writer(sys.stdout, delimiter=',')
for row in sortedReader:
try:
csvout.writerow(row)
except:
sys.stderr.write('[!] Error in row')
sys.stderr.write(row)
continue
通過之前剛剛篩選行「繼續並忽略該行」你的意思是放棄行? –
是的,我的意思是丟棄該行。 –