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
这是使用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)