Python 将字典写入xlsx文件

Python 将字典写入xlsx文件,python,Python,我有一本这样的字典: {'4F703:00013:02038': {'100.000, Oryza rufipogon x Oryza sativa', '100.000, Oryza rufipogon', '100.000, Oryza sativa', '100.000, Oryza sativa Japonica Group', '100.000, Oryza sativa f. spontanea'}} 我想把这本字典写进一个xlsx文件,所以我做了以下代码: w

我有一本这样的字典:

{'4F703:00013:02038': {'100.000, Oryza rufipogon x Oryza sativa', '100.000, 
    Oryza rufipogon', '100.000, Oryza sativa', '100.000, 
    Oryza sativa Japonica Group', '100.000, Oryza sativa f. spontanea'}}
我想把这本字典写进一个xlsx文件,所以我做了以下代码:

workbook=xlsxwriter.Workbook('demo.xlsx')
worksheet=workbook.add_worksheet()
row=0
col=0
for key in new_dict.keys():
    row += 1
    worksheet.write(row,col,   key)
    for item in new_dict[key]:
        print(item,row,col+1)
        worksheet.write(row,col + 1,item)
        col += 1
    col = 0
workbook.close()
但是,我得到了以下输出:

我想这样做:


我做错了什么

使用
pandas.ExcelWriter
可大大简化此任务:

import pandas as pd
data = {'4F703:00013:02038': {'100.000, Oryza sativa', '100.000, Oryza rufipogon x Oryza sativa', '100.000, Oryza rufipogon', '100.000, Oryza sativa f. spontanea', '100.000, Oryza sativa Japonica Group'}}
new_data = [[a, [i.split(', ') for i in b]] for a, b in data.items()]
with pd.ExcelWriter('spreadsheet.xlsx') as writer:
   df = pd.DataFrame([i for a, [c, *d] in new_data for i in [[a, *c], *[['', *k] for k in d]]])
   df.to_excel(writer, sheet_name='sheet1', startrow=0, index=False)
   writer.save()

一个
项是一个字符串,包含一个数字和一个用逗号分隔的文本。该字符串将添加到工作表的列中

为了将数字和文本分开,需要另一列

您可以执行一个
item.split(',')
并将第一部分放在第二列,第二部分放在第三列

num, text = item.split(',')
worksheet.write(row,col + 1, num)
worksheet.write(row,col + 2, text)


你的代码没有错

请注意,“100.000,普通稻x水稻”是一个值。 如果要在excel中作为单独的列显示。获取字符串并将其拆分,然后将其写入工作表。

import xlsxwriter
workbook=xlsxwriter.Workbook('demo.xlsx')
worksheet=workbook.add_worksheet()
row=0
col=0
new_dict ={'4F703:00013:02038': {'100.000 , Oryza rufipogon x Oryza sativa',
                                 '100.000 , Oryza rufipogon',
                                 '100.000 , Oryza sativa',
                                 '100.000 , Oryza sativa Japonica Group',
                                 '100.000 , Oryza sativa f. spontanea'}}
for key in new_dict.keys():
    row += 1
    worksheet.write(row,col,key)
    for item in new_dict[key]:
        print(item, row, col+1)
        item = item.split(',')
        worksheet.write(row, col + 1,item[0])
        col += 1
        worksheet.write(row,col + 1,item[1])
        row += 1
        col = 0
workbook.close()

我认为您认为,'100.000,普通稻x水稻'是多个值,但它是一个值,将在一列中填写。上述解决方案可能会澄清一些问题。

图片中的值与给定词典中的值不匹配。这是一个错误还是遗漏了一些代码?预期和实际没有太大区别。除了中间列的精度之外,您是以这种方式获得的,因为集合元素是“100.000,普通稻×水稻”。请注意,逗号(,)出现在单引号内。对不起,对于您的代码,我没有将值分开,它们保持在一起…@Sofia是您的数据delimeter始终