2014-05-17 146 views
0

我需要篩選並對來自CSV文件的數據進行一些數學運算。正在搜索一個CSV文件

我寫了一個簡單的Pyhton腳本來隔離我需要得到的行(它們應該包含某些關鍵字,如「風箏」),但是我的腳本不起作用,我找不到原因。你能告訴我它有什麼問題嗎?另一件事:一旦我到達選定的行,我怎樣才能指向每個(逗號分隔)列?

在此先感謝。

R.

import csv 

with open('sales-2013.csv', 'rb') as csvfile: 
    sales = csv.reader(csvfile) 
    for row in sales: 
     if row == "Kite": 
      print ",".join(row) 

回答

0

您正在以字節爲單位讀取文件。更改open('filepathAndName.csv, 'r')命令或轉換您的字符串,如"Kite".encode('UTF-8')。第二個錯誤可能是你正在尋找一個帶有「風箏」一詞的行,但如果「風箏」是該行的一個子字符串,它將不會被發現。在這種情況下,您必須使用if "Kite" in row:

​​

閱讀: https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files

+0

我已添加更新 – w5e

+0

謝謝!現在,它的工作原理,但我注意到,如果單詞「風箏」的第一次出現是「風箏的東西」行不會被挑選。我需要像舊的DOS命令'*'(全部)。你如何在Python中表達''風箏*「? – Sinserif

+0

使用像這樣的RegExp:'re.match(r'Kite [\ w | \ W] *',row)'。 – w5e

0

要查找的行比包含單詞「風箏」,那麼你應該使用

for row in sales: # here you iterate over every row (a *list* of cells) 
    if "Kite" in row: 
     # do stuff 

現在你知道如何找到所需的行,你可以通過索引行訪問所需的單元格。例如,如果要選擇一行中的第二個單元,只需執行以下操作:

cell = row[1] # remember, indexes start with 0 
+0

謝謝!現在,它的工作原理,但我注意到,如果單詞「風箏」的第一次出現是「風箏的東西」行不會被挑選。我需要像舊的DOS命令'星號'(全部)。你如何在python中表達「Kite'asterisk'」? – Sinserif