向Excel中的一个列表内的元组写入另一个列表内的元组

时间:2018-09-20 19:22:10

标签: python python-3.x tuples nested-lists xlsxwriter

最后,是时候将我列表中的所有数据写入Excel文件了。情况是这样的:

我有一些随机列表,一个列表的格式如下:

[[('visible',2.5,3.1,'food')],[('hidden',2.1,None,None),('hidden',5.2,3.1,None),.. ...],[],........]

是列表内的元组,另一个列表内。

我的代码将检查3个主要条件并在excel中编写一些内容。 我已经完成了下面的代码,它看起来可以工作到 else条件(不确定elif条件是否可以100%工作)。

显然,我尝试将数据添加到复杂列表中 无效的方式

def write_captions_to_excel_file(self, randomlistone, randomlisttwo, comparelists):
print('writing to excel')
workbook = Workbook(os.path.join(description_path, 'all_captions.xlsx'))
worksheet = workbook.add_worksheet()
row = 0
worksheet.write(row, 0, 'Images')  # 3 --> row number, column number, value
worksheet.write(row, 1, 'Title')
worksheet.write(row, 2, 'Market')
worksheet.write(row, 3, 'Price')
worksheet.write(row, 4, 'Offer')
worksheet.write(row, 5, 'Info')
worksheet.write(row, 6, 'Visibility')
worksheet.write(row, 7, 'Group Id')
row += 1

for index, comparelist in enumerate(comparelists):
    if len(comparelist) == 0:   #    examble [...[].....]
        pass
    elif len(comparelist) == 1:    #   examble  [[('nana', 2.3, 3.3, 'gift')]]
        worksheet.write(row, 0, randomlistone[index])  # 3 --> row number, column number, value
        worksheet.write(row, 1, randomlisttwo[index])
        worksheet.write(row, 2, comparelist[0][0])  #   write nana
        worksheet.write(row, 3, comparelist[0][1])   #  write 2.3
        worksheet.write(row, 6, 'visible'))
        if comparelist[0][2] is not None:   #  check  if   3.3 exist
            worksheet.write(row, 4, comparelist[0][2])  #   write 3.3
            worksheet.write(row, 5, comparelist[0][3])   #   write gift
        row += 1
    else:
        worksheet.write(row, 0, randomlistone[index])  # 3 --> row number, column number, value
        worksheet.write(row, 1, randomlisttwo[index])
        worksheet.write(row, 6, 'visible'))
        worksheet.write(row, 7, 'grouped' + str(index))
        for x[2] in comparelist:   
            if x[2] is not None:  # check if data exist in some tuple of the mindle list
                worksheet.write(row, 5, x[3])
                pass
        row += 1
        for y in comparelist:   # examble [[('nana', 2.3, 3.3, 'gift'),('nano', 5.3, 4.3, None),.....('nani', 2.1, 0.9, 'cart')]]
            worksheet.write(row, 0, randomlistone[index])  # 3 --> row number, column number, value
            worksheet.write(row, 1, randomlisttwo[index])
            worksheet.write(row, 2, y[0])
            worksheet.write(row, 3, y[1])
            worksheet.write(row, 6, 'hidden'))
            worksheet.write(row, 7, 'simple')
            if comparelist[2] is not None:
                worksheet.write(row, 4, y[2])
                worksheet.write(row, 5, y[3])
            row += 1
workbook.close()

感谢您的帮助,

1 个答案:

答案 0 :(得分:0)

我找到了一种从List_List_tuple项中获取数据的解决方案,以下代码对我来说很好。

for index, comparelist in enumerate(comparelists):
if len(comparelist) == 0:   #    examble [...[].....]
    pass
elif len(comparelist) == 1:    #   examble  [[('nana', 2.3, 3.3, 'gift')]]
    worksheet.write(row, 0, randomlistone[index])  # 3 --> row number, column number, value
    worksheet.write(row, 1, randomlisttwo[index])
    worksheet.write(row, 2, comparelist[0][0])  #   write nana
    worksheet.write(row, 3, comparelist[0][1])   #  write 2.3
    worksheet.write(row, 6, 'visible'))
    if comparelist[0][2] is not None:   #  check  if   3.3 exist
        worksheet.write(row, 4, comparelist[0][2])  #   write 3.3
        worksheet.write(row, 5, comparelist[0][3])   #   write gift
    row += 1
else:
    worksheet.write(row, 0, randomlistone[index])  # 3 --> row number, column number, value
    worksheet.write(row, 1, randomlisttwo[index])
    worksheet.write(row, 6, 'visible'))
    worksheet.write(row, 7, 'grouped' + str(index))
    for i in comparelist:
        if i[2] is not None:
            worksheet.write(row, 5, i[3])
            pass
    row += 1
    for y in comparelist:   # examble [[('nana', 2.3, 3.3, 'gift'),('nano', 5.3, 4.3, None),.....('nani', 2.1, 0.9, 'cart')]]
        worksheet.write(row, 0, randomlistone[index])  # 3 --> row number, column number, value
        worksheet.write(row, 1, randomlisttwo[index])
        worksheet.write(row, 2, y[0])
        worksheet.write(row, 3, y[1])
        worksheet.write(row, 6, 'hidden'))
        worksheet.write(row, 7, 'simple')
        if y[2] is not None:
            worksheet.write(row, 4, y[2])
            worksheet.write(row, 5, y[3])
        row += 1