【问题标题】:Deleting a range of csv columns删除一系列 csv 列
【发布时间】:2013-04-18 08:32:12
【问题描述】:

我正在尝试创建一个可导入模块来删除一系列列(特别是我正在使用的文件中的第 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剩余行并将其写入输出文件 &修改输入行 lineList = line.split() #转换为列表 lineList.pop(i) #从列表中删除字段 line = '\t'.join(lineList) line = line + '\n' #在行尾加回车 outPUTfile.write(line)# 将修改后的行写入输出文件 inPUTfile.close() #关闭输入文件 outPUTfile.close() #关闭输出文件 返回输出PUT文件 打印出PUT文件

【问题讨论】:

    标签: python csv python-2.7


    【解决方案1】:

    我知道您问过如何修改原始代码,但老实说,在这里我认为以不同的方式进行修改会更容易理解。 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
    

    【讨论】:

    • 我尝试运行该代码,但不幸的是它没有删除列。我是 python 脚本编写的初学者,但目标是定义一个过程,从任何 csv 文件中删除一系列列
    • 那么第一步肯定是了解csv模块。如上所示,代码在制表符分隔的 csv 文件上应该可以正常工作;把它变成一个函数很简单。反而发生了什么?您收到错误消息了吗?
    • 没有错误信息。它似乎在 python 中运行得很好(使用完全按照提供的代码)但是当我打开新的 csv 文件进行检查时,列仍然存在。
    • 好吧,您必须至少更改了文件名,所以您不能按照提供的完全使用它。你能告诉我print repr(open("youroriginalfilename.csv").readline()) 提供了什么吗?
    • 解决了!它现在运行良好!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-09-08
    • 2021-12-16
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多