我想知道是否有一种简单的方法来删除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”开头的前两列?
提前致谢
答案 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解决方案,但我不存在这个问题。