只打印列

时间:2017-11-30 18:09:39

标签: python-3.x csv

我正在尝试在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()

但如果我有一个包含数百列的文件,我需要一种巧妙的方法来解决问题。

1 个答案:

答案 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=' ')分隔符。