Если в вашем списке row
недостаточно элементов для row[i]
, вы нажимаете IndexError
. Если у вас есть пустые строки на входе, они действительно будут короче (или даже просто пустой список).
В зависимости от ваших потребностей в обработке, вы можете либо обработать столько столбцов, сколько у вас есть в каждой строке, заменить:
for i in range(csv_cols):
с:
for i in range(len(row)):
Или даже:
for (idx, cell) in enumerate(csv_cols):
row_cells[idx].text = cell
Или пропустить строки, которые являются пустым списком (но это немного менее надежный, первый также будет иметь дело с неравной длиной строк, если будет возможно достичь этого случая):
for row in csv_reader:
Может читать:
for row in csv_reader:
if not row: continue # skip empty row, go to the next one