2013-06-12 2 views
0

저는 파이썬을 사용하여 CSV를 만들려고합니다. 각 행에서 첫 번째 셀은 질문을 한 사람이되고 두 번째 셀은 대답 한 사람이되고 세 번째 셀은 대답이 게시 된 시간이됩니다. 난 그냥리스트의 각 요소는 셀이 목록을 의미하는 것은 다음과 같습니다이다 간단한 목록을 만드는거야 :CSV에 쓸 때 간격이 꺼지는 이유는 무엇입니까?

Jan Janet 3/4/05 
Jason John 3/6/05 
... 

을하지만 내 출력 셀 당 하나 개의 문자가 아니라 한 단어가 있습니다.

을 Heres의 내 코드 :

import csv 
import collections 
from collections import defaultdict 

edgelist = [] 

csv.field_size_limit(1600000) 

f = open('/Users/samuelfinegold/Documents/harvard/edXresearch/snaCreationFiles/time_series/time_series.csv','rU') 
reader = csv.DictReader(f, delimiter=',') 

    if line['types'] == 'Question': 
     #print 'T' 
     source = line['author_id'] 
    else: 
     edgelist.append(source + " " + line['author_id'] + " " + line['time']) 

with open("/Users/samuelfinegold/documents/harvard/edxresearch/snacreationfiles/time_series/connections_times_series_ex.csv", "w") as the_file: 
    csv.register_dialect("custom", delimiter=",", skipinitialspace=True) 
    writer = csv.writer(the_file, dialect="custom") 
    writer.writerows(edgelist)  

the_file.close()   
f.close() 

어떻게 세포보다는 편지 당 단어로 CSV를받을 수 있나요?

답변

1

edgelist은 문자열 목록이 아닌 목록 (또는 튜플 목록)이어야합니다. 다음에 edgelist.append() 라인을 변경해보십시오 :

edgelist.append([source, line['author_id'], line['time']]) 

를 CSV 파일에 행을 쓸 때 각 요소가 열입니다 그것이 반복 가능한을 기대하고 있기 때문에 당신은 열에서 각 문자를 받고 있습니다. 문자열을 행으로 쓰려고하면 해당 문자열의 각 문자가 별도의 열로 해석됩니다. 즉, 각 행은 목록이어야하며 따라서 writer.writerows()에는 목록의 목록이 필요합니다.

+0

그렇게하려고합니다 지금 – goldisfine

0

.writerows()에는 시퀀스 목록이 있어야합니다. 목록이나 튜플의 목록, 실제로는 문자열도 순서입니다. edgelist

추가] 튜플은 :

edgelist.append((source + " " + line['author_id'] + " " + line['time'],)) 

문자열 시퀀스가 ​​너무 때문에

, 단일 문자의 시퀀스는, 당신은 당신의 Jan Janet 3/4/05 입력이 별도의 세포로 분리되는 것을 볼.

당신은 이 정말로이 되길 원하지만 csv은 값을 구분합니다.

edgelist.append((source, line['author_id'], line['time'],)) 

과 구분 기호로 공백을 사용하는 csv.writer()에게 :

csv.register_dialect("custom", delimiter=" ", skipinitialspace=True) 
+0

이것은 월 자넷 3 /'처럼 전체 문자열을 놓을테니까 당신은 공백으로 구분 된 목록, 사용을 원하는 경우 4/05'를 하나의 셀로 만듭니다. –

+0

@ F.J : 물론, 그것이 OP가 *하고있는 것입니다. 최선의 방법은 아니지만 여전히 그렇습니다. –

관련 문제