如何打印省略空行的行?

时间:2014-06-19 15:35:49

标签: python excel xlrd

我正在尝试从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 :(得分: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]