Как напечатать строку с пропущенными пустыми столбцами?

Я пытаюсь напечатать строку заголовков из 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.


person Catalog    schedule 19.06.2014    source источник


Ответы (1)


Объект range в Python — это объект, который создает итерируемый диапазон целых чисел. Например. вы можете сделать 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]
person knbk    schedule 19.06.2014