Python-如何从文件中删除列

问题描述:

我想从文件中删除第一列。该文件包含3个以空格分隔的列,列中包含以下标题: X','位移'和'强制'(请参阅图像)。Python-如何从文件中删除列

data file

我已经想出了下面的代码,但令我失望的它不工作!

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

任何帮助非常感谢! 惠山

+4

'德尔X [0]'真的吗? – orlp 2012-04-15 00:45:40

+3

您是否真的阅读过代码丢失的错误?我的意思是,你在阅读时使用'''w''',很多都没有意义... – 2012-04-15 00:47:22

首先,您正在尝试从文件中读取(通过遍历文件内容),这些文件是可以写入的。这会给你一个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() 
+0

谢谢大家的支持。 – Esan 2012-04-15 01:16:56

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

,或者,如果你想保留空格,而你知道,第二列总是开始于,比如说,第10字:

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

一些阅读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') 

编辑:固定与空行

工作