2015-10-17 3 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

Спасибо, Летцер. – user3668772

0

Вы можете написать следующий код, считая, что знаете имя нового столбца, если это не так, вы можете вычислить его в состоянии first_line внутри цикла for.

Кроме того, мы берем последнее значение из строки значений (и устанавливаем его как последнее значение для каждой строки), если вам нужно другое поведение, просто измените часть else внутри цикла for.

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

 Смежные вопросы

  • Нет связанных вопросов^_^