0

csvファイルをスキャンするこのスクリプトがあり、最初の値がcolumn == 200その行を配列に保存する場合。

問題は、その行と次の 10 行を同じ配列に保存する必要があることです。そのためには、スクリプトに何を追加できますか? しようとしましfor row in len(10):たが、エラーが発生します。

p = csv.reader(open('file.csv'), delimiter=';')
a=[0]*2881
a = numpy.array(a, dtype=dict)
for row in p:
       if row[0]=="200":
          a=row
          break
print a
4

3 に答える 3

1

あなたが何を望んでいるかを正確に把握するのは難しいですが、私は推測しようとします.

最初の列にある最初の行から始まる CSV の 11 行の 1 つになりたい場合aがあります。list200

p = csv.reader(open('file.csv'), delimiter=';')
for row in p:
    if row[0]=="200":
        a = [row] + list(itertools.islice(p, 10))
        break

英語aでは、見つかった行のリストと次の 10 行のリストです。

numpyの代わりに配列に格納する場合はlist、事前に配列を作成してその場で追加するよりも、このループの後でリストから配列を作成する方がはるかに簡単です。

于 2013-04-24T23:09:41.123 に答える
0

おそらくこのようなものですか?

#!/usr/local/pypy-1.9/bin/pypy

import csv

def gen():
    with open('file.csv', 'rb') as file_:
        reader = csv.reader(file_, delimiter=';')
        state = 'no feed'
        for row in reader:
            if row[0]=="200":
                yield row
                state = 'feed'
                count = 1
            elif state == 'feed':
                if count < 10:
                    yield row
                    count += 1
                if count >= 10:
                    state = 'no feed'
                    count = 0

print list(gen())
于 2013-04-24T23:10:52.097 に答える