我有一个包含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'
会将数据附加到新列中,但它只是将其放在('下')所有其他数据之后......我不知道该怎么做!
答案 0 :(得分:7)
将数据写入文件的末尾,而不是写入每行的末尾。
而是创建一个新文件并将新值附加到每一行。
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)
答案 1 :(得分:0)
csv
模块不支持编写或追加列。所以你唯一能做的就是:从一个文件中读取,追加第6列数据,然后写入另一个文件。如下所示:
with open('in.txt') as fin, open('out.txt', 'w') as fout:
index = 0
for line in iter(fin.readline, ''):
fout.write(line.replace('\n', ', ' + str(data[index]) + '\n'))
index += 1
data
是int
列表。
我在python中测试这些代码,运行正常。
答案 2 :(得分:0)
我们有一个CSV文件,即data.csv,其内容为:
#data.csv
1,Joi,Python
2,Mark,Laravel
3,Elon,Wordpress
4,Emily,PHP
5,Sam,HTML
现在,我们要在此csv文件中添加一列,并且此列中的所有条目都应包含相同的值,即某些文本。
示例
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
答案 3 :(得分:-1)
打开文件的附加模式是将数据添加到文件末尾。您需要做的是提供对文件写入的随机访问。你需要使用seek()方法
你可以在这里看到和示例: http://www.tutorialspoint.com/python/file_seek.htm
或在这里阅读python文档:https://docs.python.org/2.4/lib/bltin-file-objects.html这不是非常有用
如果你想要添加到列的末尾,你可能想要打开文件读取一行来计算它的长度,然后寻找到最后。