2017-08-09 49 views
0

我有我的輸入文本文件中,這種形式的Python:刪除一列,改變一個又一個的文件並

1 2 3 4 
5 6 7 8 
9 10 11 12 

我需要把它作爲輸入,刪除最後一列,並乘以寫入輸出第三個是一個常數值,比如說10。所以最終的輸出應該是這樣的:

1 2 30 
5 6 70 
9 10 110 

所有這一切都必須在一個單獨的輸出文件被保存。 如何在Python中做到這一點?

+0

要麼做手工讀取每一行,並執行操作或嘗試使用數據框如果可能的話 –

回答

1

PS:僅限樣品。

import csv 
ff = open("output.csv","w") # added the line 
csvwriter = csv.writer(ff) # added the line 
with open(file, "r") as logFile: 
    reader = csv.reader(logFile,delimiter=" ") 
    row = [] 
    for line in reader: 
     col1 = lin[0] 
     col2 = lin[1] 
     col3 = int(lin[2]) * 10 
     row = [col1,col2,col3] 
     print row 
     csvwriter.writerow(row) # added the line 
     del row[:] # added the line 
+0

我不能簡單地打印我需要輸出到文件中,如何做到這一點? – johnhenry

+0

@johnhenry添加了功能。鼓勵你練習這一點。 – ggupta

1

你可以試試這個:

f = [map(int, i.strip('\n').split()) for i in open('thefile.txt')] 

new_f = [i[:-1] for i in f] 

new_f = [i[:-1]+[i[-1]*10] for i in new_f] 

new_file = open('final_file.txt', 'a') 

for i in new_f: 
    new_file.write(' '.join(map(str, i))+"\n") 

new_file.close() 
+0

如何在寫入輸出文件時跳過最後一列? – johnhenry

+0

@johnhenry固定。請參閱我最近的編輯。 – Ajax1234

2
import pandas as pd 
with open('textfile.txt') as f: 
    df = pd.read_csv(f, header=None, sep=' ') 

df = df.drop(3, 1) # 3 = column name, 1 indicates columns 
df[2] = df[2] * 10 
df.to_csv(r'output.txt', header=None, index=None, sep=' ', mode='a') 
+0

它產生:df = df.drop(3,1)#3 =列名,1表示列標籤[3]不包含在軸 – johnhenry

+0

這個錯誤與輸入文件和(sep ='')命令。如果此文件以製表符分隔,則應使用(sep ='\ t') – Bokje

1

只要打開該文件像往常一樣,並剝奪其對換行和空格和你有一個要求列表。在寫入模式下重新寫入相同的文件以覆蓋現有的內容。然後重寫前六個值和接下來的三個倍數,並根據需要使用換行符。

1

短執行:

with open('filename') as f: 
    inp = f.readlines() 
inp = [ i.strip().split(' ')[:-1] for i in inp ] 
out = '\n'.join([ ' '.join(i[:-1]) + ' ' + str(int(i[-1])*10) for i in inp ]) 
with open('filename','w') as f: 
    f.write(out) 
1

我嘗試了所有的參考答案,但我認爲這是最簡單的實現。有些答案沒有正確運行給我的輸入文件,或者他們只是我的問題的部分答案。

import numpy as np 

factor= 10 

a = np.loadtxt("inputfile.d") 

b = a[:, :3] 
b[:, 2] = factor*b[:, 2] 
np.savetxt('outputfile.d',b) 
相關問題