0

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

例如,我想将下面列表中的所有 a 放入 column1,将所有 b 放入 column2 等。换句话说,我只希望一个单元格有一个值,所以我希望在第一列中的第一个单元格,第一列第二个单元格中的“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)。

4

1 回答 1

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-indexed(与 Excel 人机界面一样),则根据需要将 1 添加到 rownum 和/或 colnum 应该可以纠正该问题。

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

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)
于 2014-02-03T01:18:24.883 回答