将DictReader和DictWriter用于outpu时出现Python CSV write输出错误

2024-04-26 00:03:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个脚本来重新格式化.CSV文件。读取文件以管道分隔的形式开始,并以逗号形式写入。你知道吗

它所需要做的就是索引这些列,并以我想要的方式将它们输出到文件中。你知道吗

在将输出打印到屏幕上时,我能够使它完美地工作(请参见代码底部的两行注释),但是当我尝试写入文件时,我得到了following error。我尝试了几种不同的方式来改变csv_writer.writerow({'F3'})的格式。似乎我不完全理解如何使用writerow()。或者如果我完全失去了一些使它正常工作的东西。你知道吗

我还要把静态字段放在索引字段前面。(即我需要一个“1”放在F3字段前面)还有其他技巧吗?你知道吗

import csv

csv.register_dialect('piper', delimiter='|')

with open('pbfile.txt', 'r') as csv_file:
    csv_reader = csv.DictReader(csv_file, dialect='piper',quoting=csv.QUOTE_MINIMAL)


with open('ouput2.csv', 'w', newline='') as new_file:
    fieldnames = ['F0','F1','F2','F3','F4','F5','F6']

    csv_writer = csv.DictWriter(new_file, delimiter=',',fieldnames=fieldnames)

    for line in csv_reader:
        #csv_writer.writeheader()
        csv_writer.writerow({'F3'})
        csv_writer.writerow({'F1', 'F2', 'F6'})
        #print('1', line['F3'])
        #print('380', line['F1'], line['F2'], line['F6'])

Tags: 文件csv方式line形式filewriterf2