2012-07-16 120 views
0

我試圖從CSV文件中加載數值數據,以便分別循環計算每個股票(文件)的數據並確定計算值是否大於特定數字(本例中爲731 )。但是,我使用的方法似乎使Python重複列表以及圍繞數字('500')添加引號,作爲示例,使它們成爲字符串。不幸的是,我認爲最後的「if」聲明無法處理這個問題,因此它似乎不能正常工作。我不確定發生了什麼,以及爲什麼Python需要做些什麼才能讓代碼正常運行。重複CSV文件的Python

import csv 
    stocks = ['JPM','PG','GOOG','KO'] 
    for stock in stocks: 
     Data = open("%sMin.csv" % (stock), 'r') 
     stockdata = [] 
     for row in Data: 
      stockdata.extend(map(float, row.strip().split(','))) 
      stockdata.append(row.strip().split(',')[0]) 
     if any(x > 731 for x in stockdata): 
      print "%s Minimum" % (stock) 
+2

爲什麼你導入庫csv,但不是用戶csv.reader類? – DaveP 2012-07-16 06:26:39

+1

'庫存股票:'意味着股票'會是一個str,所以它沒有'.extend()'方法。這不能是你正在運行的代碼 – 2012-07-16 06:32:44

+1

請把我們可以運行的代碼放到我們的系統中並生成你的問題。然後,只有那樣我們才能解決您的問題。如上所述,'stock'是字符串,它沒有'.extend()'方法。 – Nilesh 2012-07-16 06:37:36

回答

1

當前,您將每行的所有列添加到列表中,然後再次添加到列的最後,行的第一列?那麼所有的專欄都很重要,或者只是第一個?

你也從比較之前的文件中加載的所有數據,但不會出現在任何地方使用它,所以我想你可以更早快捷方式...

如果我理解正確的話,你的代碼是這個(或修改爲只比較第一列)。

你基本上寫這個嗎?

import csv 

STOCKS = ['JPM', 'PG', 'GOOG', 'KO'] 

for stock in STOCKS: 
    with open('{}Min.csv'.format(stock)) as csvin: 
     for row in csv.reader(csvin): 
      if any(col > 731 for col in map(float, row)): 
       print '{} minimum'.format(stock) 
       break 
+0

就是這樣。非常感謝。我的Python需要一些練習來說至少。 – user1526586 2012-07-16 07:00:33