我有一个扫描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
答案 0 :(得分:1)
很难弄清楚你想要什么,但我会试着猜测。
也许您希望a
成为CSV中11行的list
,从第一列200
开始的第一行开始:
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
中,则在此循环之后从列表构造数组要比预先构造数组更容易并尝试即时添加。
答案 1 :(得分: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())
答案 2 :(得分:-1)
试一试:
p = csv.reader(open('file.csv'), delimiter=';')
# walk through p, and look for '200'
for i, row in enumerate(p):
if row[0] == '200':
my_array = numpy.array([x for x in p[i:i+11])
应返回一个包含您感兴趣的行的数组,以及下一个10
希望这有帮助!