Python 操作 csv,这种情况这么打断点判断错在哪里?
資深大佬 : ShuoHui 20
需求:
- 从某个 csv 表格提取需要的数据,写入 xlsx
- 如果第 11 列的单元格包含“xxx”字段,则删除该行
开始的时候,我是这样:
dir = (r'C:\Users\ShuoHui\Desktop\data\') workbook = open(dir + 'filename.csv') workbookReader = csv.reader(workbook) workbookData = list(workbookReader) nRows = workbookReader.line_num rowsNum = 1 # 行号 for rowsNum in range(1, nRows): if workbookData[rowsNum][10] != 'xxx': outsheet.write(rowsNum, 0, workbookData[rowsNum][4]) outsheet.write(rowsNum, 1, workbookData[rowsNum][10]) outsheet.write(rowsNum, 4, workbookData[rowsNum][9]) outsheet.write(rowsNum, 5, workbookData[rowsNum][2]) outsheet.write(rowsNum, 9, workbookData[rowsNum][0]) else: continue outworkbook.save(dir + "out\filename.xlsx")
上面这种情况,可以输出想要的,但是会有空白行,于是我想说,加入一个 i 控制写入时候的行号,就是这样:
dir = (r'C:\Users\ShuoHui\Desktop\data\') workbook = open(dir + 'filename.csv') workbookReader = csv.reader(workbook) workbookData = list(workbookReader) nRows = workbookReader.line_num rowsNum = 1 # 行号 for rowsNum in range(1, nRows): i = 1 #从第 2 行开始写入 if workbookData[rowsNum][10] != 'xxx': outsheet.write(i, 0, workbookData[rowsNum][4]) outsheet.write(i, 1, workbookData[rowsNum][10]) outsheet.write(i, 4, workbookData[rowsNum][9]) outsheet.write(i, 5, workbookData[rowsNum][2]) outsheet.write(i, 9, workbookData[rowsNum][0]) i += 1 else: continue outworkbook.save(dir + "out\filename.xlsx")
但是这样子,只会输出最后一行有效数据。 问题 1:以后我遇到这样循环的问题,怎么打断点排错(pycharm) 问题 2:我这个问题出在哪里。。。 ps: *** 小弟基础不好 ***,请各位大神不吝赐教,感谢大家。
大佬有話說 (12)