2016-08-19 2 views
4

임의로 생성 된 문자열과 숫자를 사용하여 사전을 Excel 파일에 작성하려고합니다. 나는 거의 성공했지만 사소한 문제가 하나있다. 내 사전의 구조는 다음과 같습니다 :어떻게 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() 

그러나이 실제로하는 일은 (엑셀 파일)이 있습니다 :

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])) 
관련 문제