2017-04-05 1 views
1

파일에 CSV 형식의 데이터를 쓰려고합니다. 필자가 작성한 데이터는 정수 쌍입니다. 불일치는 숫자 10이 쓰여질 때 "1"과 "0"사이에 쉼표가 붙습니다. 이것은 그냥 들어, 숫자 10 일 등 11파이썬에서 csv 작성기의 일관되지 않은 출력

코드 :

clocktimes = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23] 

with open('testfile.csv', 'w') as tf: 
    writer = csv.writer(tf) 
    for hour in clocktimes: 
     if hour in hourtimes: 
      writer.writerow(str((hour)).split(',') + str((hourtimes[hour])).split(',')) 
     else: 
      writer.writerow((str(hour)) + (str(0))) 

출력 파일 (hourtimes이 사전은 키와 값으로 정수로 구성됩니다) :
7, 0
8,0
9,0
1,0,0

11,144 12,112
13,80

왜 이런 일이 일어나는 지, 내가이 결과를 막기 위해 할 수있는 일을 아는 사람이 있습니까?

+1

'hourtimes' 변수 란 무엇입니까? – Rishav

+1

단일 문자열을 writerow에 전달하고 있습니다. 'writerow (row) '의'row'는 [documentation]에 따라 문자열이나 숫자의 시퀀스로되어 있습니다 (https://docs.python.org/2/library/csv.html#writer-objects). 'writer.writerow ((str (hour)) + (str (0)))'문자열은 문자열을 문자 목록으로 취급하고 CSV에 하나씩 씁니다. 'writerow'를 사용하지 않거나 올바른 데이터를 전달하십시오. –

+0

시간 단위 변수 – alDiablo

답변

1

감사합니다. Random Davis!
나는 문서를 읽어와 일부 추가적인 실험이 용액 내놓았다

for hour in clocktimes: 
     if hour in hourtimes: 
      data = [hour, hourtimes[hour]] 
      writer.writerow(data) 
     else: 
      data = [hour, 0] 
      writer.writerow(data) 

writerow() 메소드에 의해 허용되는 배열에 추가 기록 할 데이터가.
...
12,112
13,80
10,0
11,144
9,0
7,0
8,0
... : 나는 어떤 원하는대로 출력은 지금

관련 문제