2014-10-16 34 views
0

對不起,如果我的代碼很糟糕,我剛開始學習Python。CSV輸出到一個單元

我正在從HTML文件中抓取數據並嘗試寫入CSV。

問題是它將所有內容寫入一個單元格。

for table in soup.find_all('table', class_='players-table'): 
    for headers in soup.find_all('thead'): 
     for y in headers.findAll('th'): 
       [csvHeader.append(i) for i in y if y.getText() != ''] 


counter = 0 

myfile = open('/Users/andrew/Documents/Projects/Football Data/ppi.csv', 'wb') 
wr = csv.writer(myfile, delimiter=',', lineterminator='\n', quoting=csv.QUOTE_MINIMAL) 
c = csv.writer(myfile) 
c.writerow(csvHeader) 



for table in soup.find_all('table', class_='players-table'): 
    for headers in soup.find_all('tbody'): 
     for rows in headers.findAll('tr'): 
      for x in rows.findAll('td'): 
       if x.getText() !='': 
        csvRows_temp.append(x.getText().replace('\n       ','').replace('\n      ','')) 
        counter +=1 
       if counter == 13: 
        myList = [','.join(csvRows_temp).encode('utf8').strip()] 
        csvRows_temp.append('\n') 
        c.writerow(myList) 
        csvRows_temp[:] = [] 
        myList[:] = [] 
        counter = 0 

輸出是這樣的: enter image description here

我怎樣才能使寫入每個細胞,而不是將它傳遞給單個細胞上的每一行的?

+0

問題尋求幫助調試(「?爲什麼不是這個代碼工作」)必須包括期望的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 – 2014-10-16 19:24:31

+0

如果你不介意你在哪裏找到你想要抓取的HTML文件?我也對足球數據感興趣。 – GiannisIordanou 2014-10-16 19:24:54

+0

evil_inside,http://www.premierleague.com/en-gb/players/ea-sports-player-performance-index.html EA爲巴克萊超級聯賽提供球員表現指數。如果您將每頁結果更改爲20以外的任何值,然後將paramItemsPerPage從URL更改爲999,您將獲得完整的數據列表。 – 2014-10-16 19:35:59

回答

1

這條線:

myList = [','.join(csvRows_temp).encode('utf8').strip()] 

創建了一個元素,在這幾個逗號,一個字符串列表。

嘗試:

myList = csvRows_temp 

或許,如果你認爲你需要的文本處理:

myList = [x.encode('utf8').strip() for x in csvRows_temp] 
+0

我的確需要文本處理,數據中包含了很多unicode字符。你給我的最後一個例子像夢一樣工作!感謝Rob。 – 2014-10-16 19:38:15