在CSV列表中查找位置
假设我有一个这样的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
没有输出。