2016-06-09 153 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)是創建作家sufficent。 Excel的默認值是正確的。

+0

我實現了這個。現在它在第一列的每一行打印一個字符。 –

+0

@DigantaBharali啊,'row'是一串數據。如果該行已經是以逗號分隔的格式,則不需要'csv.writer'。你可以'c.writerow(row.split(','))',雖然。我會更新。 –

+0

我重新寫了那部分...作品 –