为了账号安全,请及时绑定邮箱和手机立即绑定

使用指定的定界符重新排序CSV文件中的列

使用指定的定界符重新排序CSV文件中的列

拉丁的传说 2021-03-31 13:15:15
基本上,我想实现与此处批准的答案完全相同的任务。但是,如果输入CSV文件使用分号作为分隔符,则该解决方案对我不起作用。我试图将代码更改为writer = csv.DictWriter(outfile, fieldnames=fieldnames,  delimiter = ';')但是它并不能解决问题,只会产生具有新顺序的CSV文件,标头良好,但数据为空(即,仅写入定界符)。很抱歉创建一个副本,但是鉴于原始帖子的年代久远,我怀疑有人会注意到我在那里的问题/评论。我正在使用以下代码:#!/usr/bin/env python3import sys, os, csvdef reorder():    with open('in.csv', 'r') as infile, open('out.csv', 'a') as outfile:        fieldnames = ['A', 'C', 'D', 'E', 'B']        writer = csv.DictWriter(outfile, fieldnames=fieldnames, delimiter = ';')        writer.writeheader()        for row in csv.DictReader(infile):            writer.writerow(row)def main():    reorder()# standard boilerplate to call the main() function to begin the programif __name__ == '__main__':    main()给出in.csv以下内容不会产生很好的效果:A;B;C;D;Ea1;b1;c1;d1;e1a2;b2;c2;d2;e2用逗号替换分号可产生良好的效果。更新:我如下更改了相应的代码,可以正常工作:    with open('in.csv', 'r') as infile, open('out.csv', 'w') as outfile:        reader = csv.DictReader(infile, fieldnames = ['A', 'B', 'C', 'D', 'E'], delimiter=';')        fieldnames = ['A', 'C', 'D', 'E', 'B']        writer = csv.DictWriter(outfile, fieldnames=fieldnames, delimiter=';')        writer.writeheader()        for row in reader:            writer.writerow(row)
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号