删除一系列csv列

时间:2013-04-24 17:00:19

标签: python csv python-2.7

我正在尝试创建一个可导入的模块来删除一系列列(特别是我正在使用的文件中的列73-177)。我正在尝试编辑此文件的i / o代码,该代码是为删除列而编写的基于字段名称。我想修改此代码以删除csv文件中的列73-177。我需要做些什么才能做到这一点?

def removeColumns(num1, num2, inputFILE, FileName):
    inPUTfile = open(inputFILE, 'r')
    outPUTfile = open(FileName, 'w')
    line = inPUTfile.readline()
    while line:
            # Delete Specified columns. First column range number, second column range number (+1)
            lineList = line.split('\t')
            removeCOL = "Calendar-Year"
            i = 0
            while lineList[i] != removeCOL:  #(linesout?):
                i = i + 1
            lineList.pop(i) #remove these fields from the list.append
            #write modified fields
            remove = "\t".join(lineList)
            outPUTfile.write(line) #write the new field names outfile
            for line in inPUTfile:  #remove field i from each remaining line and write it in the output file  &modify input line
                lineList = line.split( ) #convert to a list
                lineList.pop(i) #remove fields from the list
                line = '\t'.join(lineList)
                line = line + '\n' #add a carriage return to the end of the row
                outPUTfile.write(line)# Write the modified line in the output file
            inPUTfile.close() #close the input file
            outPUTfile.close() #close the output file
    return outPUTfile
    print outPUTfile

1 个答案:

答案 0 :(得分:4)

我意识到你问过如何修改原始代码,但我真的认为理解如何以不同的方式做到这一点会更容易。 Python有一个有用的csv模块,可以为您处理很多工作。类似的东西:

import csv

remove_from = 2
remove_to = 5

with open("to_delete.csv", "rb") as fp_in, open("newfile.csv", "wb") as fp_out:
    reader = csv.reader(fp_in, delimiter="\t")
    writer = csv.writer(fp_out, delimiter="\t")
    for row in reader:
        del row[remove_from:remove_to]
        writer.writerow(row)

将转为

$ cat to_delete.csv 
a   b   c   d   e   f   g
1   2   3   4   5   6   7
8   9   10  11  12  13  14
15  16  17  18  19  20  21

$ cat newfile.csv 
a   b   f   g
1   2   6   7
8   9   13  14
15  16  20  21