在csv列表中查找位置

时间:2014-04-09 22:28:15

标签: python csv position xrange

说我有以下CSV文件;

1.41, 123456
1.42, 123456
1.43, 123456

并且我想在行0中找到值的“位置”/位置,即在这种情况下为“1.41,1.42,1.43”,这取决于特定行值是否大于或等于任意输入值。

因此,例如,如果输入的值是1.42,我们将返回位置0和1,或者如果输入的值是1.4,我们将返回0,1和2.同样,如果值是1.45,我们将不返回任何值位置。这就是我所拥有的:

out = open("test.csv","rU")
dataf=csv.reader(out, delimiter=',')

for row in dataf:
    x = row[0]


    for i in xrange(len(x)):
    if x[i] >=1 :
        print i

只是为了得到,

0
1
2
3
0
1
2
3
0
1
2
3

然后我用

for i in xrange(len(x)):
if x[i] >=2 :
    print i

但我仍然得到相同的位置值。任何人都可以引导我朝着正确的方向前进吗?

1 个答案:

答案 0 :(得分:0)

从我能收集的内容来看,这就是你所要求的......

#!/usr/bin/env python

import csv

value = 1.42

out = open("test.csv","rU")
dataf=csv.reader(out, delimiter=',')
matches = [float(row[0]) >= value for row in dataf]
matches.reverse()

for i,m in enumerate(matches):
    if m: 
        print i

matches是一个布尔值列表,显示每行中的第一列是否大于value。看起来你想从下往上订购,所以我reverse列表。如果第一列中的值大于或等于value,则循环打印(反向)列表的索引。

value = 1.42
输出:

0
1

value = 1.4
输出:

0
1
2

value = 1.45
没有输出。