首页 > 解决方案 > 计算每列内的行数?XLRD 封装

问题描述

我开始为 python 3.7 使用 XLRD 包。

我有一个包含固定列数(20)的 excel 文件,但在每列内,行数正在变化(例如:第一列有 21 行,第二列有 14 行)。

我写了这个:

for col in range(worksheet.ncols):
    rows_number= worksheet.nrows
    print(rows_number)

我想知道每列的行数。使用此代码,我得到第一列内行数的 20 倍(列数)。其实我明白为什么。我正在迭代nrows而不更改列。如何获取所有列的行数?如果我尝试如下,我会得到AttributeError因为 col 没有 nrows 属性。

for col in range(worksheet.ncols):
    rows_number= col.nrows
    print(rows_number)

谢谢您的帮助!!

标签: python-3.xxlrd

解决方案


您可以使用列表理解来获取列中的非空单元格,使用xlrd中的col方法并比较单元格类型,然后计算其长度

for colx in range(worksheet.ncols):
    non_emptycells=[i for i,x in enumerate(sheet.col(colx)) if x.ctype is not 0]
    print(len(non_emptycells))

推荐阅读