2012-06-15 103 views
4

從一個文件中,我記錄了一行,使用split()將行分成5列。但我必須將這些列作爲製表符分隔值寫入輸出文件。將製表符分隔值寫入文件

可以說我有l[1], l[2], l[3], l[4], l[5] ...共有5個條目。我怎樣才能實現這個使用python?而且,我無法將l[1], l[2], l[3], l[4], l[5]值寫入輸出文件。

我嘗試這兩種代碼,既不工作(我使用蟒2.6):

代碼1:

with open('output', 'w'): 
    print l[1], l[2], l[3], l[4], l[5] > output 

代碼2:

with open('output', 'w') as outf: 
    outf.write(l[1], l[2], l[3], l[4], l[5]) 
+2

看看在['csv'模塊(http://docs.python.org/library/csv。 html)來代替。 –

+0

使用'csv'模塊。這就是它的目的。編輯:打到帖子,鏈接和所有。他說什麼。 –

回答

7

您可以在代表您正在寫入的文件的with語句中使用參數。從那裏,使用.write()。這假定l中的所有內容都是一個字符串,否則你必須用str()來包裝它們。

with open('output', 'w') as f: 
    f.write(l[1] + "\t" + l[2] + "\t" + l[3] + "\t" + l[4] + "\t" + l[5] + "\n") 

或者,並更有效地,你可以使用.join()

with open('output', 'w') as f: 
    f.write('\t'.join(l[1:]) + '\n') 
+0

謝謝,這工作 – learner

5

write()方法採用一個字符串作爲其第一個參數(不是可變數量的字符串)。試試這個:

outf.write(l[1] + l[2] + l[3] + l[4] + l[5]) 

或更好:

outf.write('\t'.join(l) + '\n') 
+1

你可能想在這裏和那裏添加一個換行符。 :-P –

+0

'file.write()'不會自動添加換行符。編輯:這發生了很多。每次提前幾秒鐘。 –

+0

+1使用'join()'..我喜歡它比我自己的解決方案好得多,但也不會像光滑:) – Levon

0
outf.write('{0[1]}\t{0[2]}\t{0[3]}\t{0[4]}\t{0[4]}\n'.format(l)) 

將數據寫入到分離的文件選項卡。請注意,寫入不會自動附加\n,所以如果您需要它,您必須自己提供。

而且,最好是打開使用with文件:

with open('output', 'w') as outf: 
    outf.write('{0[1]}\t{0[2]}\t{0[3]}\t{0[4]}\t{0[4]}\n'.format(l)) 

,因爲這會自動關閉你的文件,當你完成或遇到異常。

+0

這必須是最詳細的方式來做到這一點...... –

+0

@RafeKettler可能是真的,但我試圖使用新的格式化方式...... *它功能正確,雖然* – Levon

+1

這是沒有用的重複和簡單的情況下,@Levon –

相關問題