2016-10-26 6 views
-2

CSV 파일에 쓰는 Python 사전이 있습니다. 다음과 같이 사전의 형식은 다음과 같습니다Python : csv에 쓰는 동안 문자열에서 쉼표를 무시하십시오.

{'title': u'A Preface to Democratic Theory.', 'year': u'1957'} 
{'title': u'Joseph A. Schumpeter, Capitalism, Socialism, Democracy, New York 1942', 'year': None} 

문제는 제목에 "쉼표"입니다. 키 값에 쉼표가 있기 때문에 CSV는이를 다른 셀로 분할합니다. 그래서 저는 Joseph A. Schumpeter를 첫 번째 셀에, Capitalism을 두 번째 셀에 가지고 있습니다.

def make_csv(mydict): 
    with open('mydata.csv', 'a') as f: 
    writer = csv.DictWriter(f,fieldnames=[""], delimiter=',') 
    writer.writeheader() 

    [f.write('{1},'.format(key, normalize(value))) for key, value in mydict.items()] 

누군가가 도와 드릴까요 : 다음은 CSV 파일을 작성하려면 코드는?

+4

왜 작가 객체를 무시하고 있습니까? ou가'writer.writerow()'를 사용한다면 쉼표로 적절한 값을 따옴표로 묶을 것입니다. –

+1

그리고'fieldnames = [ ""]'를 설정하는 이유는 무엇입니까? –

+1

'writer = csv.DictWriter (f, fieldnames = [ '제목', '연도')','writer.writerow (mydict)'. 매번 파일을 다시 열지 않아도 도움이 될 것입니다. * once * 파일을 열고,'DictWriter'를 한 번 만든 다음,'dict' 행을 작성하기 위해 계속 사용하십시오. –

답변

1

fieldnames을 지정하지 말고 DictWriterwriterow 방법을 사용해야합니다.

def make_csv(list_of_dicts): 
    with open('mydata.csv', 'a') as f: 
     writer = csv.DictWriter(f,fieldnames=["title", "year"], delimiter=',') 
     writer.writerows(list_of_dicts) 

이 함수에 매개 변수로 dicts 목록에 합격 한 번에 모든 데이터를 기록 할 수 writerows 방법을 사용하면 헤더가 필요하지 않은 경우

당신은 writeheader를 건너 뛸 수 있습니다.

+0

고마워. 내 실수를 이해했다 !! –

관련 문제