Как отформатировать каскадный вывод списка - python - PullRequest
0 голосов
/ 22 мая 2019

Я использую pyexcel, чтобы попытаться отфильтровать файл Excel для определенных значений, но я не могу понять, как отформатировать вывод своих функций.

Мне нужно вывести значения ячеек в форме [x, y] для pyexcel для чтения данных, в настоящее время мой вывод выводится как [x, y], и пробел перед значением y делает его таким, что pyexcel падает.

Видел ответы на некоторые вопросы, используя метод% string format, но это не влияет на мой сценарий.

Это то, что у меня в данный момент, место аварии, обозначенное <---: </p>

import pyexcel as pe

sheet = pe.get_sheet(file_name="foo.xlsx") 

print sheet #displays excel file

#these are accepted ways to output a cell value
#sheet[1,2], "numeric" 
#sheet['B1'], "alphanumeric"

list_rows = list(range(11))   #Max Row Value +1 as upper bound
list_columns = list(range(4))    #Max Column Value +1 as upper bound

def Scroller(max_row,max_column):
  r = 0
  while r <= (len(list_rows)-1):
    c = 0
    while c <= (len(list_columns)-1):
      index = [list_rows[r],list_columns[c]]
      print "%s" % index
      print sheet[index]  <------
      c += 1
    r += 1

Scroller((len(list_rows)-1),(len(list_columns)-1))

Несмотря на то, что при этом выполняется правильная итерация для всех значений ячейки, ее вывод имеет пробел, например:

[0, 0]
[0, 1]
[0, 2] ... etc.

Мне нужно:

[0,0]
[0,1]
[0,2] ... etc.

Заранее спасибо за любую помощь!

1 Ответ

0 голосов
/ 22 мая 2019

Предостережение: я никогда не использовал pyexcel, так как предпочитаю модули CSV ...

Нет опыта работы с этим модулем, но, учитывая ваш синтаксис, пару мыслей здесь:

  1. sheet - это некоторый объект, к которому можно получить доступ с помощью метода __getitem__()
  2. Для доступа к чему-либо в sheet это либо sheet[row, col], либо sheet['A#']
  3. Ваше высказывание о том, что sheet[1, 2] потерпит крах из-за пробела в [1, 2]

Учитывая эти ограничения, давайте рассмотрим то, что вы опубликовали.Во-первых, давайте начнем с ваших примеров выходных данных:

print "%s" % index
# [0, 0]
# [0, 1]
# [0, 2] ... etc.

Ну, это говорит мне, что index имеет тип list, содержащий целые числа, что имеет смысл, учитывая предыдущую строку:

index = [list_rows[r],list_columns[c]]

Затем вы говорите, что ваша программа дает сбой в следующей строке:

print sheet[index]  <------

Но вы сказали, что sheet должен быть проиндексирован в соответствии с ограничениями в пункте 2, давайте посмотрим, что вы делаете:

index = [list_rows[r],list_columns[c]]
# For example, the first one is [0, 0]
# Currently, index = [0, 0]
print "%s" % index # Which prints index as a string
print sheet[index] # You're doing sheet[[0, 0]]
# Wait, you broke Item 2 constraints!

Итак, попробуйте следующее:

  1. print sheet[index[0], [index[1]] или ...
  2. print sheet[*index] как немного чище

Честно говоря, вы можете уменьшить код:

def Scroller(max_row,max_column):
  r = 0
  while r <= (len(list_rows)-1):
    c = 0
    while c <= (len(list_columns)-1):
      print sheet[list_rows[r],list_columns[c]]
      c += 1
    r += 1

Однако некоторые сведения о форматировании строки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...