【发布时间】:2013-11-03 16:11:33
【问题描述】:
我需要使用 cvs.reader 对象来处理,因为必须保留列的顺序。 但是,出于其他一些原因,我还想拥有 csv.DictReader 对象。
现在,是否有一种简单的方法可以在不重新读取文件的情况下相互转换它们?
【问题讨论】:
-
AFAIK
DictWriter确实保留了列的写入顺序,所以我不明白你在问什么。你能否提供一个你想使用的示例代码、它的预期输出以及你得到的输出?
我需要使用 cvs.reader 对象来处理,因为必须保留列的顺序。 但是,出于其他一些原因,我还想拥有 csv.DictReader 对象。
现在,是否有一种简单的方法可以在不重新读取文件的情况下相互转换它们?
【问题讨论】:
DictWriter 确实保留了列的写入顺序,所以我不明白你在问什么。你能否提供一个你想使用的示例代码、它的预期输出以及你得到的输出?
我建议您改用tablib。
ds = tablib.Dataset()
ds.csv = open(csvfile).read()
然后您可以将ds 作为行序列进行迭代,ds.dict 为您提供每行的OrderedDict 实例列表。如果您还需要将其转换为其他格式,或者再次编辑并另存为 csv,这会容易得多。
【讨论】: