我正在尝试在python中创建一个程序,一旦打开.csv文件,就会打印(或者更好地创建一个只有偶数列的新文件)。 例如,如果我的文件包含:
A B C D E
1 2 3 4 5
6 7 8 9 0
新文件只有:
B D
2 4
7 9
到目前为止,我有这个:
import csv
ifile=open('Example.csv', 'r')
reader=csv.reader(ifile)
ofile=open('Example2.csv', 'w')
writer=csv.writer(ofile, delimiter=',')
for row in reader:
writer.writerow(row[1:2]+row[3:4])
print(row[1:2]+row[3:4])
ifile.close()
ofile.close()
但如果我有一个包含数百列的文件,我需要一种巧妙的方法来解决问题。
答案 0 :(得分:1)
考虑到您的数据如下所示(请参阅行之间没有新行):
A B C D E
1 2 3 4 5
6 7 8 9 0
您可以将程序修改为:
import csv
ifile=open('Example.csv', 'r')
reader=csv.reader(ifile, delimiter=' ')
ofile=open('Example2.csv', 'w')
writer=csv.writer(ofile, delimiter=',')
for row in reader:
# Here you check for even
tmp_row = [col for idx, col in enumerate(row) if (idx + 1) % 2 == 0]
writer.writerow(tmp_row)
ifile.close()
ofile.close()
循环遍历每一行以获取列索引,然后检查even(实际上是奇数,因为索引从0开始)列。此外,您应指定reader=csv.reader(ifile, delimiter=' ')
分隔符。