2016-08-19 869 views
4

我試圖用隨機生成的字符串和數字編寫一個字典到Excel文件。我幾乎成功了,但有一個小問題。我的字典的結構如下:如何將python字典寫入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

+0

Kudos @nekomatic保持樂趣和挑戰性 –

+0

任何其他提示在逗號分隔的同一個單元格中打印值?其他一切都很好。 – DeA

回答

2

問題確實出現在兩個循環中。我插手和他們一起玩,直到我到達答案。他們工作正常。感謝你們!

這種替換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]))