在CSV列表中查找位置

0 投票
1 回答
6274 浏览
提问于 2025-04-18 02:07

假设我有一个这样的CSV文件:

1.41, 123456
1.42, 123456
1.43, 123456

我想找到第一行中某个值的位置,比如“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 个回答

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

撰写回答