0

GSpread または XLWT を使用して、インデックス 0 のすべてのアイテムが最初の列にあり、インデックス 1 のすべてのアイテムが 2 番目の列にあるというように、このサブリストのリストから表形式のデータ構造を作成するにはどうすればよいでしょうか?

たとえば、次のリストのすべての a を column1 に入れ、すべての b を column2 に入れたいとします。つまり、1 つのセルに 1 つの値だけを入れたいので、最初の列の最初のセル、最初の列の 2 番目のセルの 'aa1'、1 番目の列の 3 番目のセルの '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 に置き換えられ、(column, row, datapoint) ではなく sheet.write(row,column,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)

enumerateとはどちらもxlwt(少なくとも Python インターフェースでは) インデックスが 0 であるため、変更する必要はありません。gspread のインデックスが 1 である場合 (Excel のヒューマン インターフェイスのように)、必要に応じて rownum および/または colnum に 1 を追加すると、それが修正されます。

メイン リストの 2 次元サブリス​​トの数によっては、複数のワークシートがあるように思えます。繰り返しますが、そのためにネストできます。

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 に答える