2015-10-17 50 views
1

我想在現有文件中添加一個新列,並且希望將輸出寫入另一個文件。我打開文件如下,並添加我所需的語句。如何通過在最後添加新列(使用列名稱/標題)將輸出寫入文件。分離是標籤。輸入的Python添加了帶有標題的新列

with open(newfile, 'w') as outfile: 
    with open(oldfile, 'r', encoding='utf-8') as infile: 
     statements: 

樣品:

Col1 Col2 Col3 Col4 

Val1 Val1 Val1 Val1 
Val2 Val2 Val2 Val2 
Val3 Val3 Val3 Val3 
Val4 Val4 Val4 Val4 

輸出的樣品:

Col1 Col2 Col3 Col4 Col5(Newly added) 

Val1 Val1 Val1 Val1 Val1 
Val2 Val2 Val2 Val2 Val2 
Val3 Val3 Val3 Val3 Val3 
Val4 Val4 Val4 Val4 Val4 

預先感謝。

+0

現在的問題是不明確的。您顯示的輸出樣本是針對現有文件的,對嗎? – blackmamba

回答

1
import csv 

with open('data','r') as f_in: 
    with open('data_out', 'w') as f_out: 
     writer = csv.writer(f_out, delimiter=' ', lineterminator='\n') 
     reader = csv.reader(f_in, delimiter=' ') 

     result = [] 
     # read headers 
     row = next(reader) 
     # add new header to list of headers 
     row.append('Col5') 
     result.append(row) 

     for row in reader: 
      # add new column values 
      row.append(row[0]) 
      result.append(row) 

     writer.writerows(result) 

data_out 

Col1 Col2 Col3 Col4 Col5 
Val1 Val1 Val1 Val1 Val1 
Val2 Val2 Val2 Val2 Val2 
Val3 Val3 Val3 Val3 Val3 
Val4 Val4 Val4 Val4 Val4 
+0

謝謝Letzer。 – user3668772

0

假設您事先知道新列的名稱,您可以編寫以下代碼,如果情況並非如此,您可以在for循環中的first_line條件下計算它。如果您需要其他行爲,只需在for循環中更改else部分即可。如果您需要其他行爲,請在for循環中更改else部分。

new_column_name = 'Col5' 
with open(newfile, 'w') as outfile: 
    with open(oldfile, 'r', encoding='utf-8') as infile: 
     for line in infile: 
      if first_line: 
       outfile.write('{} {}\n'.format(line, new_column_name)) 
       first_line = False 
      else: 
       values = line.split() 
       if values: 
        values.append(values[-1]) 
       outfile.write(' '.join(values) + '\n') 

希望它能幫助,

+0

謝謝Avenet。 – user3668772