将新列添加到现有csv文件

时间:2014-05-15 15:12:02

标签: python

我有一个包含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'会将数据附加到新列中,但它只是将其放在('下')所有其他数据之后......我不知道该怎么做!

4 个答案:

答案 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

dataint列表。

我在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这不是非常有用

如果你想要添加到列的末尾,你可能想要打开文件读取一行来计算它的长度,然后寻找到最后。