0

假设我有以下 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

但我仍然得到相同的位置值。谁能引导我朝着正确的方向前进?

4

1 回答 1

1

据我所知,这可以满足您的要求...

#!/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
没有输出。

于 2014-04-09T23:38:42.767 回答