如何访问for循环csv python中的某些列值
这是我的csv文件:如何访问for循环csv python中的某些列值,python,csv,Python,Csv,这是我的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(inp
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)
因此y参数(sys.argv[1])将是基于b值的行数上限。因此,如果第四行是3700,我输入4000,它将打印所有行,直到3700是最后一行(因为5060大于4000)
现在的问题是kount不起作用了。我无法访问b列的值。您需要将列
b
的值转换为整数,以便能够进行比较,即将y
与int(kount)
进行比较。这是可行的(为了清晰起见,稍微重写代码):
编辑:您的代码还将生成一个csv,其中b>y,与您试图实现的相反。它以一种有趣的方式删除了列i,在标题中留下5列,在正文中留下4列您不是以列表的形式访问数据,而是以字符串的形式访问数据(您将2000与python计算结果小于的“,”进行比较)。您需要执行类似于
kount=int(row.split(',')[1])
或(可能?)kount=eval(row)[1]
谢谢您这正是我想要的。对不起,我忘记了第一个代码中的一些东西,它们可能没有意义,比如del和counts以及ID。
a,b,c,d,e,
0,100,0,0,0
0,1500,0,0,0
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)