0

我想使用列标题和行标题的串联作为键来构建一个字典。在这种格式中,单元格 (0,0) 为空白

在此处输入图像描述

我希望脚本从第二列标题开始,将其字符串值连接到第一列中的第二行值,然后是第二行,依此类推,直到没有更多行为止。如果第1列 row[i]中的相应单元格值为空白,则应跳过生成键。如果它不为空,则应将具有相应单元格值的键作为其值。

因此,不会创建 0.5_20.00;和 .05_32.00: 9.00 将被创建

一旦它到达最后一行,它应该移动到第三列(column[2])并做同样的事情,直到没有更多的列。

import xlrd

#make dict from excel workbook, size and frequency

serParams = {}
wb = xlrd.open_workbook(r"S:\Shared\Service_Levels.xlsx")
sh = wb.sheet_by_index(0)

# Get row range value

row_range_value = 0
for i in sh.col(0):
    row_range_value += 1
row_range_value = row_range_value -1
print row_range_value

# Get column range value

column_range_value = 0
for i in sh.row(0):
    column_range_value += 1
column_range_value = column_range_value - 1
print column_range_value

# build the dict by using concatenated column and row headers as keys and
# corresponding values as key value

for i in range(0,column_range_value,1):
    for j in range(0,row_range_value,1):
        if sh.cell(i+1,j+1).value != '':
            key = str(sh.cell(i+1,j).value) +"_"+str(sh.cell(i,j+1).value)
            serParams[key] = sh.cell(i+1, j+1).value

也许我的数据格式导致索引错误,因为一旦循环到达表的末尾,范围就超出了 i+1 和 j+1 的表数据?我试图通过从范围值中减去 1 来解决这个问题,但我继续得到索引错误。

4

0 回答 0