Как обновить определенный столбец строки в csv с помощью python

#python #csv

#python #csv

Вопрос:

У меня есть файл csv со следующим содержимым

 1,2,3,4
a,b,c,d
w,x,y,z
  

И я хочу обновить содержимое этого файла csv до

 1,2,3,4
a,b,c,d,k
w,x,y,z
  

Может ли кто-нибудь поделиться кодом Python для этого процесса обновления??

Ответ №1:

Используя библиотеку csv, мы считываем данные, преобразуем их в список списков, добавляем k в соответствующий список, затем записываем его снова.

 import csv

data = csv.reader(open("input.csv"))

l = list(data)    
l[1].append("k")

our_writer = csv.writer(open("output.csv", "wb"))

our_writer.writerows(l)
  

Хотя библиотека csv не является полностью необходимой для вашего игрушечного случая, часто полезно использовать хорошо масштабируемый подход.

Комментарии:

1. Для обобщения вы можете найти with инструкцию, полезную для правильного закрытия файлов. Чтобы обновить файл на месте, вы можете записать во временный файл и переименовать его в случае успеха. Вы должны использовать 'wb' mode для выходного файла. Если вы загружаете все строки в память, это writer.writerows() позволяет вам записывать все строки одновременно.

Ответ №2:

Вам не нужно csv для такого простого случая:

 # sed '2s/$/,k/'
import fileinput
for lineno, line in enumerate(fileinput.input(inplace=True), start=1):
    if lineno == 2:
       line = line.rstrip('n')   ",kn"
    print line,
  

Пример:

 $ python update_2nd_line.py data_to_update.csv
  

Он обновляет data_to_update.csv файл на месте.