2016-08-19 21 views
4

私はランダムに生成された文字列と数字を含む辞書をExcelファイルに書き込もうとしています。私はほとんど成功しましたが、小さな問題が1つあります。私の辞書の構造は以下の通りです:Python辞書をExcelファイルに書き込むにはどうすればよいですか?

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

この辞書は、テキストファイルから得られたデータから生成されたものです。年齢に基づいてすべてのコンテンツを集計し、同じ年齢の2人が1つのリストにグループ化します。私はこのデータを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

問題があなたの最後の2 'ループfor'です。あなたの頭や紙の中を慎重に歩いたり、実際に行と列に書いているものをデバッグするために 'print'ステートメントを追加してください。ヒント:いくつかのセルの内容を複数回上書きしています。 – nekomatic

+0

Kudos @nekomaticは楽しくチャレンジし続けるためのものです –

+0

同じセルの値をカンマで区切って印刷するヒントはありますか?他のすべては良いです。 – DeA

答えて

2

問題は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])) 
関連する問題