2013-03-04 3 views
1

저는 잠시 동안 저를 괴롭 혔고, 아직 답을 찾지 못했습니다. 대부분의 스크립트는 일부 파일을 읽고 값을 비교하여 목록이나 사전에 저장합니다. 그런 다음 출력 파일을 작성합니다. 필자가 항상하는 일은리스트를 반복하고 탭, 쉼표 또는 줄 바꿈으로 구분하여 출력에 단일 항목을 쓰는 것입니다. 내가 항상 궁금해하는 점은 목록의 마지막 항목이 인쇄 된 후에 나타나는 구분 기호를 어떻게 방지 할 수 있는지입니다. 내가 마지막 ","피하려면 어떻게해야목록 항목을 파이썬의 텍스트 파일에 작성하십시오.

a: 1, 2, 3, 
b: 4, 5, 6, 
c: 7, 8, 9, 

:

dict1 = {a: [1,2,3], b: [4,5,6], c: [7,8,9]} 
for key in dict1: 
    outfile.write(key +": ") 
    for item in dict1[key]: 
     outfile.write(str(item) +", ") 
    outfile.write("\n") 

출력은 다음과 같을 것이다 : 여기

은 예입니다? 어떤 표준 라이브러리 CSV 모듈을 사용하는 방법에 대한

for key, value in dict1.iteritems(): 
    outfile.write(key +": ") 
    outfile.write(', '.join([str(item) for item in value])) 
    outfile.write("\n") 

답변

3

str.join 방법 및 목록 comprehesion를 사용?

그것은 그것을 처리 할

, 플러스 필요한 escapint (당신의 가치 중 하나에 쉼표가 포함 된 경우 무엇을?)

(그리고, 물론, 일반적인 경우로, 제대로 후행 구분없이 가입 string.join(list) 사용)

+0

이 방법이 효과적이지만 OP에 놀랄만한 것은 키 순서가 반드시 필요한 것은 아니라는 것입니다. 예를 들어 a, c, b를 얻습니다. (그러나 그들은 지정하지 않았습니다. 명확한 요구 사항) –

+0

쿨, 고마워! 나는 새로운 것이 간단 할 것이다. :-) –

+0

@JonClements 그 말 주셔서 감사합니다. 목록 이해력 때문에 또는 단순히 사전이 순서를 유지하지 않기 때문에 발생합니까? –

1

:

+0

CSV 형식이 거의 필요하지 않기 때문에 저는 생각하지 않았습니다. 나는 모양을 가질 것이다. :-) –

관련 문제