2014-01-16 4 views
-3

나는 몇 시간 동안 검색을 해왔으며 아주 간단한 질문이어야하는 답변을 찾을 수 없습니다. 나는 DICT이Python에서 CSV에 dict을 쓸 때 작은 따옴표를 제거

...

{'apples' : 'red', 'pears' : 'green', 'bananas' : 'yellow'} 

나는 CSV이를 작성하려고, 그것은 작은 따옴표를 유지하고 그들이 내 파일 ... 내가 원하지 않는에서 생을 마감.

outputz = {} 
print('\nBegin phrase token output:\n') 
    with open('test.csv', 'w', newline='') as csvfile: 
     spamwriter = csv.writer(csvfile, delimiter=',', 
           dialect='excel', quoting=csv.QUOTE_NONE, escapechar='/') 

     spamwriter.writerow([outputz]) 
     spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam']) 
     writer = csv.writer(open('test.csv', 'w')) 
     for key, value in outputz.items(): 
       writer.writerow([key, value]) 
    outputz = {} 
else: 
    outputz = {} 

전체 코드를 다시 작성하거나 다시 작성하고 싶지 않습니다. 이미 튜토리얼 예제를 사용하고 있습니다. 나는 풀 타임 개발자가되기를 기대하지 않고있다, 나는 단지 내 상사를 위해 한번 노크 할 필요가있다.

어떻게 파이썬 3에서 바보 괄호와 작은 따옴표없이 csv의 2 열 (키, 값)에 내 dict을 작성합니까? 누군가 예제 코드를 줄 수 있습니까?

+0

코드 샘플은 거의 의미가 없습니다. 들여 쓰기가 뭐예요? 'outputz'는 어디에 정의되어 있습니까? 왜'else :'가'if','for','while' 또는'try' 문과 일치하지 않는 이유는 무엇입니까? –

+0

CSV 파일 *을 두 번 열어 * 왜 사전 전체를 작성한 다음 다시 열어서 (지워서) 사전 테스트 항목을 작성합니까? –

답변

1

코드에는 많은 문제가 있지만 기본 문제는 항목별로가 아니라 전체 사전을 한 번에 작성한다는 것입니다 (spamwriter.writerow([outputz])). (key, value) 열의 출력을 원하면 정확하게 수행해야합니다. 각 키 - 값 쌍에 대해 해당 쌍을 csv 파일에 씁니다. 당신은 실제로 라인 열 당신이 게시 코드의 사도와 같이, 이미 이렇게하고 있습니다 :

import csv 
outputz = {'apples' : 'red', 'pears' : 'green', 'bananas' : 'yellow'} 
with open(r'C:\test\foo.bar', 'w') as f: 
    writer = csv.writer(f) 
    for key, value in outputz.items(): # Iterate over the dictionary items 
     writer.writerow([key, value]) # Write each pair to the csv file. 

이 코드는 출력 파일에 예상 키 - 값 쌍을 생산하고 그것을 실행할 때.


난 당신이 약간의 코드를 정리하는 것이 좋습니다 : 당신은 어떤 미친 들여 쓰기있어 내가 의심 것을 계속 몇 가지 이상한 물건은 문제의 실제 루트입니다. 세 번째 줄은 아무 이유없이 들여 쓰여진 것처럼 보입니다. 매우 의심스러운 else 절이 있습니다. 마지막으로 출력 파일을 (3 번과 9 번 줄에 두 번) 열면이 작은 상황에서 진정한 범인이 될 수 있습니다.

관련 문제