2012-04-15 114 views
1

我想從文件中刪除第一列。該文件包含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

回答

7

首先,您正在嘗試從文件中讀取(通過遍歷文件內容),這些文件是可以寫入的。這會給你一個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

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

,或者,如果你想保留空格,而你知道,第二列總是開始於,比如說,第10字:

print ''.join([l[11:] for l in file('datafile.txt')]) 
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') 

編輯:固定與空行

工作