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 に答える