如何格式化串联列表输出-python

时间:2019-05-21 22:26:43

标签: python list format

我正在使用pyexcel尝试为某些值过滤excel文件,但是我不知道如何格式化函数输出。

我需要以[x,y]形式输出单元格值,以便pyexcel读取数据,当前我的输出为[x,y],并且y值之前的空格使pyexcel崩溃。

看到了一些使用%字符串格式方法回答的问题,但这对我的脚本没有影响。

这是我目前拥有的崩溃位置,用<---:

标识
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 :(得分:0)

注意:我从未使用过pyexcel,因为我更喜欢CSV模块...

没有使用此模块的经验,但是鉴于您的语法,这里有几点想法:

  1. sheet是一些可以通过__getitem__()方法访问的对象
  2. 要访问sheetsheet[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

一些关于字符串格式的阅读: