我正在使用 csv.DictReader
读取 .csv
文件。
csv.DictReader
有一个迭代器,它将每一行作为 dict
返回,我知道如何使用列的标题获取单列值:
CsvReaderRow[' D0']
CsvReaderRow[' D1']
CsvReaderRow[' D2']
CsvReaderRow[' D3']
CsvReaderRow[' D4']
CsvReaderRow[' D5']
CsvReaderRow[' CLOCK']
CsvReaderRow[' FRAME']
但是有没有一种方法可以用一条语句取出一堆列呢?我想做
CsvReaderRow[(' D0', ' D1', ' D2', ' D3', ' D4', ' D5')]
并获取这些键值的列表
,但它给了我KeyError
。
我知道它正在尝试对元组进行哈希处理,但这不是我想要的。
我可以创建一个DX
列表,然后使用for el in key_list
来索引到字典中,但我想知道是否有一种更Pythonic的方式来做到这一点。
如上所述,以下方法应该可以很好地工作:
import csv
required = ['D0', 'D1', 'D2', 'D3', 'D4', 'D5']
entries = []
with open('input.csv', 'rb') as f_input:
for dict_row in csv.DictReader(f_input):
entries.append([dict_row[col] for col in required])
或者更简洁一点:
with open('input.csv', 'rb') as f_input:
entries = [[dict_row[col] for col in required] for dict_row in csv.DictReader(f_input)]
在 Python 2.7.9 中测试
我是一名优秀的程序员,十分优秀!