如何打印忽略空列的行?

0 投票
1 回答
2086 浏览
提问于 2025-04-18 10:23

我正在尝试从Excel中打印一行标题,但有些字段是空的,尽管这一列里有数据。
我只想打印那些标题不为空的列。目前我正在努力让程序只打印那些不为空的标题,但我不知道该怎么做。
我还是个Python初学者,所以很多东西对我来说并不明显。

这是我用来尝试获取标题的代码:

import xlrd
import xlwt

book = xlrd.open_workbook("file.xlsx")
sheet = book.sheets()[0]
r = sheet.row(0)

print(r)

这段代码打印了这一行的每个值,但空的部分显示为, empty:,而这些正是我想排除的部分。

当我尝试这段代码只打印非空的行时:

for row in range(r):
    if r is not None:
        print(r)

我遇到了一个错误,提示a 'list' object can't be interpreted as an integer

1 个回答

0

Python中的range对象是一个可以生成一系列整数的工具。比如,你可以写for i in range(100):,这个循环就会依次遍历从0100之间的每一个整数。

row函数返回的是一系列Cell对象,这些对象本身就可以被遍历。要遍历这些对象,只需写for cell in row:

在一行中的对象永远不会是None,所以检查row is not None并不能排除空单元格。空单元格是单例的,也就是说,空单元格只有一个实例,其他的单元格都是不空的。检查一个单元格是否为空的正确方法是:

from xlrd.sheet import empty_cell

if cell is empty_cell:

如果你想实现你想要的功能,比较繁琐的方式是这样的:

for cell in row:
    if cell is not empty_cell:
        print cell

使用列表推导式,这个过程可以简化成一行代码:

print [cell for cell in row if cell is not empty_cell]

撰写回答