我有我的輸入文本文件中,這種形式的Python:刪除一列,改變一個又一個的文件並
1 2 3 4
5 6 7 8
9 10 11 12
我需要把它作爲輸入,刪除最後一列,並乘以寫入輸出第三個是一個常數值,比如說10。所以最終的輸出應該是這樣的:
1 2 30
5 6 70
9 10 110
所有這一切都必須在一個單獨的輸出文件被保存。 如何在Python中做到這一點?
我有我的輸入文本文件中,這種形式的Python:刪除一列,改變一個又一個的文件並
1 2 3 4
5 6 7 8
9 10 11 12
我需要把它作爲輸入,刪除最後一列,並乘以寫入輸出第三個是一個常數值,比如說10。所以最終的輸出應該是這樣的:
1 2 30
5 6 70
9 10 110
所有這一切都必須在一個單獨的輸出文件被保存。 如何在Python中做到這一點?
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
你可以試試這個:
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()
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')
只要打開該文件像往常一樣,並剝奪其對換行和空格和你有一個要求列表。在寫入模式下重新寫入相同的文件以覆蓋現有的內容。然後重寫前六個值和接下來的三個倍數,並根據需要使用換行符。
短執行:
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)
我嘗試了所有的參考答案,但我認爲這是最簡單的實現。有些答案沒有正確運行給我的輸入文件,或者他們只是我的問題的部分答案。
import numpy as np
factor= 10
a = np.loadtxt("inputfile.d")
b = a[:, :3]
b[:, 2] = factor*b[:, 2]
np.savetxt('outputfile.d',b)
要麼做手工讀取每一行,並執行操作或嘗試使用數據框如果可能的話 –