如何使用Gpread或XLWT从子列表列表创建表格数据结构?

时间:2014-02-03 01:00:26

标签: python list xlwt sublist gspread

如何使用GSpread或XLWT在此子列表列表中创建表格数据结构,其中索引0处的每个项目都在第一列中,索引1处的每个项目都在第二列中,等等。 >

例如,我想将以下列表中的所有a放入column1,将所有b放入column2等等。换句话说,我只想要一个值到一个单元格,所以我想'a '在第一列的第一个单元格中,第一列的第二个单元格中的'aa1',第一列的第三个单元格中的'aa2'等。

 lst = [[['a','b','c'],['aa1','bb1','cc1'],['aaa2','bbb2','ccc2']],[['a','b','c'],['aa1','bb1','cc1'],['aaa2','bbb2','ccc2']]]

这就是我所拥有的,它使用for循环,但我想知道是否有一种不同的方法,我可以创建一个for循环,这样我就不必为每个循环手动创建一个for循环额外栏目。

    gc = gspread.login('username', 'password')
    sheet = gc.open("Curalate").sheet1

    row = 1
    for subsublist in lst[0]:
         sheet.update_cell(1,row,subsublist[0])
         row = row + 1
    row = 1 
    for subsublist in lst[0]:
         sheet.update_cell(2,row,subsublist[1])
         row = row + 1
             row = 1 
    for subsublist in lst[0]:
         sheet.update_cell(,row,subsublist[2])
         row = row + 13

另外,如果这是xlwt,它完全相同,除了sheet.udpate_cell将替换为sheet.write并且它是有组织的sheet.write(row,column,datapoint)而不是(column,row,datapoint)。

1 个答案:

答案 0 :(得分:1)

基于评论:“每个子列表都有自己的工作表”,我认为你可以用嵌套循环很简单地做到这一点。我熟悉xlwt而不是gspread,所以我将用xlwt语法演示:

# assume worksheet is an xlwt worksheet object
lst = [['a','b','c'],['aa1','bb1','cc1'],['aaa2','bbb2','ccc2']]
for (rownum, rowlist) in enumerate(lst):
    for (colnum, value) in enumerate(rowlist):
        worksheet.write(rownum, colnum, value)

enumeratexlwt都是0索引的(至少在Python界面中),所以你不需要改变它。如果gspread是1索引的(如Excel人机界面那样),根据需要在rownum和/或colnum中加1应该可以纠正。

听起来您将拥有多个工作表,具体取决于主列表中二维子列表的数量。同样,你可以为此筑巢:

wb = xlwt.Workbook()
for (sheet_number, sublist) in enumerate(lst):
    ws = wb.add_sheet('sheet_%s', sheet_number + 1)
    for (rownum, rowlist) in enumerate(sublist):
        for (colnum, value) in enumerate(rowlist):
            ws.write(rownum, colnum, value)