我正在使用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.
在此先感谢您的帮助!
答案 0 :(得分:0)
注意:我从未使用过pyexcel,因为我更喜欢CSV模块...
没有使用此模块的经验,但是鉴于您的语法,这里有几点想法:
sheet
是一些可以通过__getitem__()
方法访问的对象sheet
或sheet[row, col]
中的sheet['A#']
中的内容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!
因此,请尝试以下操作:
print sheet[index[0], [index[1]]
或... 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
一些关于字符串格式的阅读: