csv到OrderedDi

2024-06-13 07:02:12 发布

您现在位置:Python中文网/ 问答频道 /正文

如何从csv中订购信息技术?有什么功能吗?

csv格式:

1 one
2 two

订购信息:

OrderedDict((('1', 'one'), ('2', 'two')))

Tags: csv功能信息格式oneordereddicttwo信息技术
3条回答

在Python 3中,CSV模块可以导入CSV文件并将行直接转换为OrderedDict的实例,键的顺序与CSV文件一致。这与Python 2的行为不同,python2将行作为普通dict类型返回。

import csv
from pprint import pprint

with open(filename) as fd:
    for row in csv.DictReader(fd):
        pprint(row)
Date,Name,Notes
31 May 2019,Robert,
1 June 2019,Silvio,
OrderedDict([('Date', '31 May 2019'),
             ('Name', 'Robert'),
             ('Notes', '')])
OrderedDict([('Date', '1 June 2019'),
             ('Name', 'Silvio'),
             ('Notes', '')])
...

我也有同样的问题,简单的方法是子类化和调整csv函数。这是我的工作代码:http://code.activestate.com/recipes/577996-ordered-csv-read-write-with-colum-based-lookup/?in=user-4177968

如果csv有两列,如问题中所述,则可以执行以下操作:

import csv
import collections

with open('foo.csv','rb') as f:
    r = csv.reader(f)
    od = collections.OrderedDict(r)

如果csv文件中的行被格式化为key, value1, value2, value3,则可以执行以下操作:

with open('foo.csv','rb') as f:
    r = csv.reader(f)
    od = collections.OrderedDict((row[0], row[1:]) for row in r)

相关问题 更多 >