例如,我的 csv 有如下列:
ID, ID2, Date, Job No, Code
我需要以相同的顺序写回各列。这dict
立即打乱了顺序,所以我相信这更多是读者的问题。
蟒蛇的dict
s 在 3.6 之前不维持顺序(但是,无论如何,在该版本中csv.DictReader
类被修改为返回OrderedDict
s).
然而,实例csv.DictReader
您正在使用的(在您阅读第一行之后!-)does have a .fieldnames
字符串列表,其中IS为了。
So,
for rowdict in myReader:
print ['%s:%s' % (f, rowdict[f]) for f in myReader.fieldnames]
将向您显示订单确实得到维护(在.fieldnames
当然,NEVER in the dict
——这在 Python 中本质上是不可能的!-)。
所以,假设你想阅读a.csv
和写b.csv
具有相同的列顺序。使用普通的 reader 和 writer 太容易了,所以你想使用 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
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)