[英]add a new column to an existing csv file
我有一個包含 5 列的 csv 文件,我想在第 6 列中添加數據。 我擁有的數據在一個數組中。
現在,只有在 csv 文件中已經存在的所有數據之后,我擁有的代碼才會在第 6 列中插入我想要的數據。
例如我有:
wind, site, date, time, value
10, 01, 01-01-2013, 00:00, 5.1
89.6 ---> this is the value I want to add in a 6th column but it puts it after all the data from the csv file
這是我正在使用的代碼:
csvfile = 'filename'
with open(csvfile, 'a') as output:
writer = csv.writer(output, lineterminator='\n')
for val in data:
writer.writerow([val])
我以為使用'a'
會將數據附加到新列中,但它只是將它放在 ('under') 所有其他數據之后......我不知道該怎么做!
追加將數據寫入文件的末尾,而不是每行的末尾。
相反,創建一個新文件並將新值附加到每一行。
csvfile = 'filename'
with open(csvfile, 'r') as fin, open('new_'+csvfile, 'w') as fout:
reader = csv.reader(fin, newline='', lineterminator='\n')
writer = csv.writer(fout, newline='', lineterminator='\n')
if you_have_headers:
writer.writerow(next(reader) + [new_heading])
for row, val in zip(reader, data)
writer.writerow(row + [data])
在 Python 2.x 上,刪除newline=''
參數並將文件模式從'r'
和'w'
更改為'rb'
和'wb'
。
一旦您確定這正常工作,您可以用新文件替換原始文件:
import os
os.remove(csvfile) # not needed on unix
os.rename('new_'+csvfile, csvfile)
csv
模塊不支持寫入或附加列。 所以你唯一能做的就是:從一個文件讀取,附加第 6 列數據,然后寫入另一個文件。 這顯示如下:
with open('in.txt') as fin, open('out.txt', 'w') as fout:
index = 0
for line in fin:
fout.write(line.replace('\n', ', ' + str(data[index]) + '\n'))
index += 1
data
是一個int
列表。
我在 python 中測試了這些代碼,它運行良好。
我們有一個 CSV 文件,即 data.csv,其內容是:
#data.csv
1,Joi,Python
2,Mark,Laravel
3,Elon,Wordpress
4,Emily,PHP
5,Sam,HTML
現在我們要在這個 csv 文件中添加一列,並且該列中的所有條目都應該包含相同的值,即Something text 。
例子
from csv import writer
from csv import reader
new_column_text = 'Something text'
with open('data.csv', 'r') as read_object, \
open('data_output.csv', 'w', newline='') as write_object:
csv_reader = reader(read_object)
csv_writer = writer(write_object)
for row in csv_reader:
row.append(new_column_text)
csv_writer.writerow(row)
輸出
#data_output.csv
1,Joi,Python,Something text
2,Mark,Laravel,Something text
3,Elon,Wordpress,Something text
4,Emily,PHP,Something text
5,Sam,HTML,Something text
打開文件的附加模式旨在將數據添加到文件的末尾。 您需要做的是提供對文件寫入的隨機訪問。 你需要使用 seek() 方法
你可以在這里看到和例子: http : //www.tutorialspoint.com/python/file_seek.htm
或者在這里閱讀 python 文檔: https : //docs.python.org/2.4/lib/bltin-file-objects.html這不是非常有用
如果您想添加到列的末尾,您可能需要打開文件讀取一行以確定它的長度,然后尋找到末尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.