替换 csv 标题而不删除其他行

use*_*207 0 python csv python-3.x

我想替换 cvs 文件的标题行text.csv

header_list = ['column_1', 'column_2', 'column_3']
Run Code Online (Sandbox Code Playgroud)

标题将如下所示;

column_1, column_2, column_3
Run Code Online (Sandbox Code Playgroud)

这是我的代码;

import csv
with open('text.csv', 'w') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(header_list)
Run Code Online (Sandbox Code Playgroud)

csv 文件的标题已正确替换。但是,csv 文件中的其余行已被删除。如何仅替换标题而其他行保持不变?

我正在使用 python v3.6

tar*_*ras 5

这是使用csv模块执行此操作的正确方法。
csv.DictReader将 csv 文件的内容读入字典列表。它接受一个可选fieldnames参数,如果设置了该参数,则应用自定义标题并忽略原始标题并将其视为数据行。因此,您需要做的就是使用 .csv 文件读取您的 csv 文件并使用 .csv 文件csv.DictReader写入数据csv.DictWriter。您将不得不删除 中的第一行,reader因为它包含旧标题并写入新标题。不过,将新数据写入单独的文件确实有意义。

import csv

header = ["column_1", "column_2", "column_3"]

with open('text.csv', 'r') as fp:
    reader = csv.DictReader(fp, fieldnames=header)

    # use newline='' to avoid adding new CR at end of line
    with open('output.csv', 'w', newline='') as fh: 
        writer = csv.DictWriter(fh, fieldnames=reader.fieldnames)
        writer.writeheader()
        header_mapping = next(reader)
        writer.writerows(reader)
Run Code Online (Sandbox Code Playgroud)