簡體   English   中英

如何使用Gpread或XLWT從子列表的列表中創建表格數據結構?

[英]How to create a tabular data structure from a list of sublists with Gpread or XLWT?

如何使用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)。

基於注釋:“每個子列表都有自己的工作表”,我認為您可以使用嵌套循環非常簡單地完成此操作。 我熟悉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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM