这是我的csv文件:
a,b,c,d,e,
0,100,0,0,0
0,1500,0,0,0
0,2350,0,0,0
0,3700,0,0,0
0,5060,0,0,0
和我的python代码:
import csv, os, sys
y = int(sys.argv[1])
with open("csvinput.csv", 'rb') as input, open('temp.csv', 'wb') as output:
reader = csv.reader(input, delimiter = ',')
writer = csv.writer(output, delimiter = ',')
all = []
header = next(reader)
header.insert(0, 'ID')
all.append(header)
count = 0
del header[1]
del header[-1]
for row in reader:
kount = row[1]
count += 1
while y<kount:
del row[0]
del row[-1]
all.append(row)
row.insert(0, count)
break
writer.writerows(all)
我想输入“python python.py 2000”然后让我的temp.csv看起来像这样:
a,b,c,d,e,
0,100,0,0,0
0,1500,0,0,0
因此y参数(sys.argv [1])将是基于b值的行数的上限。因此,如果第4行是3700并且我输入4000,则打印出所有行,直到3700是最后一行(因为5060超过4000)。
问题是现在kount不起作用。我无法访问b列的值。
答案 0 :(得分:1)
您需要将列b
的值转换为能够进行该比较的整数,即将y
与int(kount)
进行比较。这有效(为了清晰起见,重写代码):
import csv, os, sys
y = int(sys.argv[1])
with open("csvinput.csv", 'rb') as input, open('temp.csv', 'wb') as output:
reader = csv.reader(input, delimiter = ',')
writer = csv.writer(output, delimiter = ',')
header = next(reader)
outdata = []
outdata.append(header)
for row in reader:
kount = int(row[1])
if y > kount:
outdata.append(row)
writer.writerows(outdata)
编辑:您的代码也会产生一个csv,其中b&gt; y,与你想要达到的目标相反。它以一种有趣的方式删除列,在标题中留下5列,在正文中留下4列