使用python删除.dat文件中的行和列

时间:2017-12-14 13:19:33

标签: python linux

我想知道是否有一种简单的方法来删除python中的特定行和列。如果这是一个微不足道的问题,请道歉。

为了给出一些上下文,我正在编写一个脚本来自动执行一系列linux命令(特别是ciao Chandra望远镜分析命令),其中一部分将某个命令的输出保存到.dat文件中。目前,输出中包含了一些我不想要的行和列......

E.G目前的数据如下:

表格块HISTOGRAM的数据

--------------------------------------------------------------------------------
ROW    CELL   RCENTRE              RHALFWIDTH           AREA                 COUNTS               SUR_BRI             

     1      1          1.016260150          1.016260150        12.9783552105                    0                    0
     2      1          3.048780450          1.016260150        38.9350656315                  1.0     0.02568378873336
     3      1          5.081300750          1.016260150        64.8917760526                  1.0     0.01541027324001
     4      1          7.113821050          1.016260150        90.8484864736                  1.0     0.01100733802858
     5      1          9.146341350          1.016260150       116.8051968946                    0                    0
     6      1   

-------------------------------------
-------------------------------------

我想删除包含“表格块直方图数据”和破折号的前几行,以及以“ROW”和“CELL”开头的前两列?

提前致谢

1 个答案:

答案 0 :(得分:0)

假设您的分隔符是制表符,或者您在末尾的列之间不需要完全相同的距离,并假设有趣的行以数字开头(如您的示例所示),您可以编写类似的内容:

def cutFile(fname, firstWantedColumn):
    """Keep wanted lines and colums: detect lines beginning with number and keep input columns"""
    f=open(fname, "r")
    lf = f.readlines()
    f.close()

    txtOut = ""
    for l in lf:
        if l[0].isdigit(): #detect if first char is a number
            txtOut += "\t".join(l.split()[firstWantedColumn:]) + "\n"
    g = open(".".join(fname.split(".")[:-1]) + "_cutted" + fname.split(".")[-1])
    g.write(txtOut)
    g.close()

cutFile("myFile.dat", 2)

编辑:这是一个强力解决方案,也许你在谈论一个先进的oneliner解决方案,但我不存在这个问题。