如何打印忽略空列的行?
我正在尝试从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):
,这个循环就会依次遍历从0
到100
之间的每一个整数。
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]