【问题标题】:How to print a row with blank columns omitted?如何打印省略空白列的行?
【发布时间】:2014-08-10 05:27:02
【问题描述】:

我正在尝试从 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 的错误。

【问题讨论】:

    标签: python excel xlrd


    【解决方案1】:

    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]
    

    【讨论】:

      猜你喜欢
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多