2016-06-09 2 views
0

piwik 응답 데이터가 있습니다. 그것을 CSV 파일로 출력해야합니다. 그리고 그것을 열 때 Excel에서 제대로 포맷해야합니다. 지금 내가 얻는 것은 Excel에서 쉼표로 구분 된 파일이며 매번 형식을 지정해야합니다. 내가 마지막 두 줄을 주석 사용하는 경우 다음은 내 코드Python CSV 출력

siteIDs = [51] 
#def calculate(): 
for id in siteIDs: 
    for date in daterange(min_date, max_date): 
     response_data = {} 
     #print date.strftime('%Y-%m-%d') 
     token_auth = '35a2c1b4707f45cebfbdaa7f6c3af267' 
     url = 'http://survey.modul.ac.at/piwikAnalytics/?module=API&method=Live.getLastVisitsDetails&idSite=' + str(id) + '&format=csv&token_auth=' + token_auth + '&period=day&date=' + date.strftime('%Y-%m-%d') + '&filter_limit=2000' 
     #print url 
     try: 
      response=requests.get(url,timeout=100) 
      response_url=response.url 
      response_data=urllib.urlopen(url) 

     except (requests.exceptions.Timeout,requests.exceptions.RequestException,requests.exceptions.HTTPError,requests.exceptions.ConnectionError,socket.error) as e : 
      response_data="error" 
     data = response_data.read() 
     with open('raw_csv/piwik_'+ str(id) + '_' + date.strftime('%Y-%m-%d')+ '.csv', 'w') as fp: 
      c = csv.writer(fp,delimiter=',',lineterminator = '/n') 
      #for row in data: 
        #c.writerow([row]) 
      fp.write(data) 

, 그것은 적절한 형식에서 저를 제공하지만 각 셀에 하나 개의 문자. 내가 무엇입니까 출력은 다음과 같습니다 enter image description here

그리고 내가 원하는 출력은 다음과 같습니다 enter image description here

답변

1

사용 c.writerow(row.split(','))하지 c.writerow([row]). 두 번째는 한 행에 전체 행을 쓰는 것입니다. writerow은 열 값의 반복을 취합니다. row은 문자열이므로 c.writerow(row)은 문자열의 단일 문자를 반복하므로 올바른 유형의 목록을 얻으려면 쉼표로 분리하십시오. (CSV 문서 당) 쓰기 CSV 파일, 사용 또한

:

open(filename,'wb')   # Python 2.x 
open(filename,'w',newline='') # Python 3.x 

c = csv.writer(fp)는 작가를 생성하면 충분. 기본값은 Excel에 적합합니다.

+0

이것을 구현했습니다. 이제 첫 번째 열의 각 행에 한 문자를 인쇄합니다. –

+0

@DigantaBharali 아,'row'는 단일 데이터 문자열입니다. 줄이 이미 쉼표로 구분 된 형식 인 경우에는'csv.writer'가 필요하지 않습니다. 하지만'c.writerow (row.split (','))'할 수 있습니다. 나는 갱신 할 것이다. –

+0

나는 그 부분을 썼다 ... 작품 –