如何将Python字典写入Excel文件?

5

我正在尝试将包含随机字符串和数字的字典写入Excel文件。我已经接近成功,但还有一个小问题。我的字典结构如下:

Age: 11, Names Count: 3, Names: nizbh,xyovj,clier

这个字典是从文本文件中获取的数据生成的,它根据年龄将所有内容聚合在一起,如果两个人年龄相同,则将它们分组到一个列表中。我正在尝试将这些数据写入Excel文件中。目前为止,我已经编写了如下代码:

import xlsxwriter
lines = []

workbook = xlsxwriter.Workbook('demo.xlsx')
worksheet = workbook.add_worksheet()

with open ("input2.txt") as input_fd:
    lines = input_fd.readlines()

age_and_names = {}

for line in lines:
    name,age = line.strip().split(",")


    if not age in age_and_names:
        age_and_names[age]=[]

    age_and_names[age].append(name)

print age_and_names

for key in sorted(age_and_names): 
    print "Age: {}, Names Count: {}, Names: {}".format(key, len(age_and_names[key]), ",".join(age_and_names[key]))

row=0
col=0

for key in sorted(age_and_names):#.keys():
    row += 1
    worksheet.write(row, col, key)

    for item in age_and_names[key]:
        worksheet.write(row, col+1, len(age_and_names[key]))
        worksheet.write(row, col+1, item)
        row+=1 

workbook.close()  

但实际上这是在Excel文件中执行的操作:
11    nizbh
      xyovj
      clier

我该怎么做才能使它显示为这样呢?

Age   Name Count         Names 
11        3        nizbh, xyovj, clier

1
问题出在你最后的两个 for 循环中。在脑海中仔细地步进这些循环,或者在纸上模拟一遍,或者通过加入 print 语句来调试你实际写到了哪一行和哪一列的内容。提示: 你正在多次覆盖某些单元格的内容。 - nekomatic
赞 @nekomatic 保持乐趣和挑战性。 - David Andrei Ned
有没有其他提示可以将值以逗号分隔的方式打印在同一单元格中?其他都很好。 - DeA
1个回答

3

问题确实出现在这两个for循环中。我干预并尝试了各种操作,直到找到答案。它们现在正常工作。谢谢大家!

请使用以下代码替换最后的for循环:

for key in sorted(age_and_names):#.keys():
    row+=1
    worksheet.write(row, col, key)
    worksheet.write(row, col+1, len(age_and_names[key]))
    worksheet.write(row, col+2, ",".join(age_and_names[key]))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接