2012-05-18 6 views
1

이 연습을 위해 두 가지 다른 기능을 생각해 냈습니다. 하나는 csv 클래스 작성기를 사용하고 다른 하나는 DictWriter 클래스를 사용합니다. 둘 다 나열된 예상 결과를 통과하지만 개인 테스트 케이스에 실패합니다.Pyschools 주제 13 Q 9 csv.writer

import csv 
def csvWriter(filename, records): 
    header = [] 
    for i in records: 
     if len(i) < 1: 
      records.remove(i) 
    for i in records: 
     for v in i: 
      if v not in header: 
      header.append(v) 
    for i in records: 
     if len(i) == 0: 
      return '0 records processed.' 
    test=open(filename,'w') 
    wr = csv.writer(test,header,lineterminator='\n') 
    wr.writerow(header) 
    for i in records: 
     wr.writerow(i.values()) 
    test.close() 
    return '%d records processed.' % len(records) 

csvWriter ('파일 이름', [{ '은'1 ', B': 2}, { "A": 3 ', B': 4}]

에 repr (오픈 (체크

'2 개의 레코드가 전달되었습니다.'---> '2. 기록을 통과시켰다. '체크

개인 테스트 케이스 ---> 실패?

답변

1

이 함수가 Private Test Cases에서 실패한 이유는 두 번째 인수가 전달 될 수 있고 값이 정렬되지 않고 기록된다는 것입니다.

import csv 
def csvWriter(filename, records): 
    header = [] 
    for i in records: 
    if len(i) < 1: 
     records.remove(i) 
    for i in records: 
    for v in i: 
     if v not in header: 
     header.append(v) 
    for i in records: 
    if len(i) == 0: 
     return '0 records processed.' 
    test=open(filename,'w') 
    dict_wr = csv.DictWriter(test,header,lineterminator='\n') 
    dict_wr.writerow(dict(zip(header,header))) 
    for i in records:  
    # Adding in the **sorted** built-in fixed it 
    dict_wr.writerow(dict(zip(header,sorted(i.values())))) 
    test.close() 
    return '%d records processed.' % len(records) 

아직도 꽤 거칠어졌습니다. 우리는 csv 모듈을 사용하지 않을 것입니다. 이 문제를 개선하고 모듈없이 시도해 보겠습니다.

제안 사항?