您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

是否可以使用csv.DictReader保持列顺序?

是否可以使用csv.DictReader保持列顺序?

Python的dict不会在3.6之前保持顺序(但是,无论该版本如何,csv.DictReader该类都被修改为返回OrderedDicts)。

然而,实例csv.DictReader您使用(你读过的第一行后- !) 有一个.fieldnames字符串列表,其中 秩序。

所以,

for rowdict in myReader:
  print ['%s:%s' % (f, rowdict[f]) for f in myReader.fieldnames]

会告诉你的是,为了确实维护(中.fieldnames当然, 千万不要dict-这是在Python本质上是不可能的- - !)。

因此,假设您要以相同的列顺序进行a.csv读写b.csv。使用普通的读取器和写入器太容易了,因此您想使用Dict变体;-)。好吧,一种方法是…:

import csv

a = open('a.csv', 'r')
b = open('b.csv', 'w')
ra = csv.DictReader(a)
wb = csv.DictWriter(b, None)

for d in ra:

  if wb.fieldnames is None:
    # initialize and write b's headers
    dh = dict((h, h) for h in ra.fieldnames)
    wb.fieldnames = ra.fieldnames
    wb.writerow(dh)

  wb.writerow(d)

b.close()
a.close()

假设您有标头a.csv(否则您不能在其上使用DictReader),而只想要相同的标头b.csv

其他 2022/1/1 18:27:54 有530人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶