Python-如何从文件中删除列

时间:2012-04-15 00:43:06

标签: python file

我想从文件中删除第一列。该文件包含3个以空格分隔的列,这些列具有以下标题: X','Displacement'和'Force'(请参见图片)。

data file

我想出了以下代码,但令我失望的是它不起作用!

f = open("datafile.txt", 'w')
 for line in f:
  line = line.split()
  del x[0]
f.close()

非常感谢任何帮助! 埃桑

3 个答案:

答案 0 :(得分:8)

首先,您试图从一个文件中读取(通过迭​​代文件内容),这个文件是开放的。这将为您提供IOError

其次,没有名为x的变量(你没有在脚本中声明/设置一个)。这将生成NameError

第三,也是最后,一旦完成(正确)读取和编辑文件中的列,您将需要将数据写回文件。

为避免同时将(可能很大的)文件加载到内存中,从一个文件(逐行)读取并同时写入新文件可能是个好主意。

这样的事可能有用:

f = open("datafile.txt", "r")
g = open("datafile_fixed.txt", "w")

for line in f:
    if line.strip():
        g.write("\t".join(line.split()[1:]) + "\n")

f.close()
g.close()

答案 1 :(得分:1)

print ''.join([' '.join(l.split()[1:]) for l in file('datafile.txt')])

或者,如果你想保留空格,你知道第二列总是以第10个字符开头:

print ''.join([l[11:] for l in file('datafile.txt')])

答案 2 :(得分:1)

关于python i/o的一些阅读可能会有所帮助,但以下内容应该让您站起来:

with open("datafile.txt", "r") as fin:
    with open("outputfile.txt", "w") as fout:
        for line in fin:
            line = line.split(' ')
            if len(line) == 3:
                del line[0]
                fout.write(line[0] + ' ' + line[1])
            else:
                fout.write('\n')

编辑:修复为使用空行