8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Python 3.6:使用 DictWriter 重命名列标题

NoDataDumpNoContribution 2月前

25 0

我的 python 脚本目前使用 DictWriter 读取 csv 文件,重新排列列并写入新的输出 csv 文件。输入的 CSV 文件有以下列:A;B;C;D,将被转换为...

我的python脚本目前使用DictWriter读取csv文件,重新排列列并写入新的输出csv文件。输入的CSV文件有以下列:

A;B;C;D

将转移至:

B,C;A;D

另外,我想重命名其中一个标题。我已经尝试了两种方法:

1.) 创建一个新 writer 对象并使用“writer”方法。但是,这只是将所有给定的字段名放在最前面的列中:

newHeader = csv.writer(outfile)
newFN = ['B', 'C', 'Renamed', 'D']
newHeader.writerow(newFN)

输出为:

B,C,Renamed,D;;;

2.)使用现有 DictWriter 对象,我定义一个新的列标题列表并对其进行迭代:

newHeader = ['B', 'C', 'Renamed', 'D']
writer.writerow(dict((fn, fn) for fn in newHeader))

然而这次,重命名的列标题在输出 CSV 中仍然是空的。

帖子版权声明 1、本帖标题:Python 3.6:使用 DictWriter 重命名列标题
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由NoDataDumpNoContribution在本站《csv》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 您可以使用字典重命名列并 csv.writer 从重新排序的对象中写入值 OrderedDict

    from io import StringIO
    from collections import OrderedDict
    import csv
    
    mystr = StringIO("""A;B;C;D
    1;2;3;4
    5;6;7;8""")
    
    order = ['B', 'C', 'A', 'D']
    
    # define renamed columns via dictionary
    renamer = {'C': 'C2'}
    
    # define column names after renaming
    new_cols = [renamer.get(x, x) for x in order]
    
    # replace mystr as open(r'file.csv', 'r')
    with mystr as fin, open(r'C:\temp\out.csv', 'w', newline='') as fout:
    
        # define reader / writer objects
        reader = csv.DictReader(fin, delimiter=';')
        writer = csv.writer(fout, delimiter=';')
    
        # write new header
        writer.writerow(new_cols)
    
        # iterate reader and write row
        for item in reader:
            writer.writerow([item[k] for k in order])
    

    结果:

    B;C2;A;D
    2;3;1;4
    6;7;5;8
    
返回
作者最近主题: