0

目前,我正在尝试从不同的 CSV 文件中检索数字数据。然后我将这些数据放在 Python 中的列表中。但是,我正在努力让 Python 确定每个单独的数据列表中是否存在大于某个数字的值。我需要能够分别在每个列表中搜索某个值,此时 Python 应该返回我选择的一些文本。我不确定我错过了什么,但 Python 似乎并没有像我希望的那样处理我的语法。

    import csv
    stocks = ['JPM','PG','KO','GOOG']
    for stock in stocks:
        Data = open("%sMin.csv" % (stock), 'r')
        Ticker = []
        for row in Data:
            Ticker.append(row.strip().split(','))
        if Ticker > 735:
            print "%s Minimum" % (stock)

我修改了其他股票成为 Ticker 的代码以消除混乱。

4

2 回答 2

1

有三个错误,阻止你得到结果。

  1. stock是一个值列表,因此您无法直接对列表本身进行数字比较。
  2. 您正在将列表附加到列表中。因此,即使您对每个值进行操作,您也会将列表与 int 进行比较。要么找出要附加的元素,要么适当地添加它们。
  3. 在该列表中找到最大值以与您进行比较。

首先,将浮点数附加到您的列表中:

float(stock_value)

其次,找出拆分行的哪个索引是数值。如果它们都是数值,则通过扩展将它们全部添加到列表中:

# only convert items to float that are not empty strings
stock.extend(float(val) for val in row.strip().split(',') if val.strip())

如果它说,第一列,只添加那个:

stock.append(float(row.strip().split(',')[0]))

第三,如果您只是想知道列表中是否有大于 735 的值,您可以简单地询问列表的最大值:

if max(stock) > 735:
    print "%s Minimum" % (stock)
于 2012-07-16T04:43:09.067 回答
1

确保在将股票价格添加到列表时将其转换为浮动价格。

stock.extend(map(float, row.strip().split(',')))

现在开始你的测试。

max(stock) > 735

应该做的伎俩。如果列表中的最大数字大于您的目标,那么您知道至少有一个数字是。

更明确的方式是:

any(x > 735 for x in stock)
于 2012-07-16T04:44:33.903 回答