我是Python的初学者。我的数据表(Table1)有21列和数千行。它是如此巨大,我不能在我的笔记本电脑上打开它。看起来有点像这样:
ABCDEFG,HIJKLMNO,PQRSTUVW,TEYHDSJD ........
TRGFHFJ,GDGSANTO,JDKNVWWR,URNWHJX ........
.......
但是,我需要重现此表的一个子集,该子集仅包含第10-21列。我尝试过以下方法:
import sys
import csv
with open(sys.argv[1], "r") as input:
readinput = csv.reader(input, delimiter=',')
with open("output.csv", 'wt') as output:
writer=csv.writer(output, delimiter="\t")
for row in input:
values = [row[10],row[11],row[12],row[13],row[14],row[15],row[16],row[17],row[18],row[19],row[20],row[21]]
writer.writerow([values])
print (row[10])
但事实证明,cvs.reader的表达式“row [10]”并未将其解释为行的第10个元素(=第10列)。相反,它给了我第10个字母。所以输出不是Table1的第10到第21列,但它是第10到第21个字母,有点像这样:
K,L,M,N,O,“”,P,Q,R,S,T,U
S,A,N,T,O,“”,J,D,K,N,V,W
我做错了什么?谢谢你的帮助!
答案 0 :(得分:1)
您正在使用for row in input
,我猜您想要for row in readinput
。
答案 1 :(得分:0)
如果你有一个.csv文件,并且想要创建另一个.csv,使后一个文件只包含前一个文件的第10到21列,你可以这样做:
with open('old_file.csv') as old_f, open('new_file.csv', 'w') as new_f:
for line in old_f:
new_f.write(','.join(line.split(',')[10:]))