1

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

def removeColumns(num1, num2, inputFILE, FileName):
    inPUTfile = 打开(输入文件,'r')
    outPUTfile = 打开(文件名,'w')
    line = inPUTfile.readline()
    而线:
            # 删除指定的列。第一列范围编号,第二列范围编号 (+1)
            lineList = line.split('\t')
            removeCOL = "日历年"
            我 = 0
            而 lineList[i] != removeCOL: #(linesout?):
                我 = 我 + 1
            lineList.pop(i) #从list.append中删除这些字段
            #写入修改的字段
            删除 = "\t".join(lineList)
            outPUTfile.write(line) #写入新的字段名 outfile
            for line inPUTfile: #remove field i from each剩余行并将其写入输出文件 &modify 输入行
                lineList = line.split() #转换为列表
                lineList.pop(i) #从列表中删除字段
                line = '\t'.join(lineList)
                line = line + '\n' #在行尾加回车
                outPUTfile.write(line)# 将修改后的行写入输出文件
            inPUTfile.close() #关闭输入文件
            outPUTfile.close() #关闭输出文件
    返回输出PUT文件
    打印出PUT文件
4

1 回答 1

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
于 2013-04-24T17:21:35.687 回答