2012-07-16 103 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