"unsupported operand type(s) for /: 'NoneType' and 'float' " 在 openpyxl 中

"unsupported operand type(s) for /: 'NoneType' and 'float' " in openpyxl

我正在尝试读取 Excel 文件中的列,并将数据写入 Python 中列的相应文本文件(使用 Openpyxl)。 Excel 文件中缺少一些数据,例如下面的第二列:

"gappy.xlsx":

350.2856445313  -424.5273132324 -322.6161499023
609.8883056641                  -453.6102294922
780.6325683594                  -628.981628418

这是我的代码:

import openpyxl

wb = openpyxl.load_workbook('gappy.xlsx', data_only = True)
ws = wb.active
factor = 1.0

for i in range (1,4):
    with open('text'+str(i)+'.txt', "wt") as file_id:
        for j in range (1,ws.max_row+1):
            file_id.write("{:.3e}\n".format(ws.cell(row = j,column = i).value/factor))

#        I've also tried this, but I cannot write a file separately for each cloumn ... 
#        for column in ws.columns:
#            for cell in column:
#                print(cell.value)
#                file_id.write('%f\n' % (ws.columns[i][0].value))

然后,我得到了这个错误:

TypeError: unsupported operand type(s) for /: 'NoneType' and 'float'

原因是第二列的空白被读作'None'。 我知道阅读第 2 列直到 'max_row+1' 是错误的,但我不知道还能做什么。 请告诉我如何解决这个问题。 提前谢谢你。

好吧,你可以在做除法之前检查两个参数不是 None。万一 None 以任何你想要的方式处理它。

像这样

if ws.cell(row = j,column = i).value is not None and factor is not None:
    file_id.write("{:.3e}\n".format(ws.cell(row = j,column = i).value/factor))
else:
    # handle it in a different fashion