【发布时间】:2014-03-04 03:01:11
【问题描述】:
我有一个从 .csv 文件中提取的大列表:
CSV_PATH = 'myfile.csv'
CSV_OBJ = csv.DictReader(open(CSV_PATH, 'r'))
CSV_LIST = list(CSV_OBJ)
我只想保留其中的一些列:
KEEP_COLS = ['Name', 'Year', 'Total Allocations', 'Enrollment']'
从Removing multiple keys from a dictionary safely 看来,这样应该可以工作:
BETTER = {k: v for k, v in CSV_LIST if k not in KEEP_COLS}
但我收到一个错误:ValueError: too many values to unpack 我在这里错过了什么?我可以编写一个循环,通过 CSV_LIST 运行并通过只保留我想要的内容来产生更好的效果,但我怀疑使用理解更 Pythonic。
根据要求,一大块 CSV_LIST
{'EIN': '77-0000091',
'FR': '28.4',
'Name': 'Org A',
'Enrollment': '506',
'Total Allocations': '$34214',
'geo_latitude': '37.9381775755',
'geo_longitude': '-122.3146910612',
'Year': '2009'},
{'EIN': '77-0000091',
'FR': '28.4',
'Name': 'Org A',
'Enrollment': '506',
'Total Allocations': '$34214',
'geo_latitude': '37.9381775755',
'geo_longitude': '-122.3146910612',
'Year': '2010'}
在命令行我可以做csvcut -c 'Name','Year','Total Allocations','Enrollment' myfile.csv > better_myfile.csv,但这绝对不是pythonic。
【问题讨论】:
-
CSV_LIST的所有项目似乎都不是两个项目列表/元组。你能打印一点CSV_LIST并在这里发布输出吗? -
我最终使用 csvcut csvkit.readthedocs.org/en/latest/scripts/csvcut.html#examples 来获得我需要的东西,但这并不是一个完美的解决方案。
-
@Amanda:未来的提示——虽然添加版本标签很有用,但您还应该添加通用的
python标签。您会注意到,在我编辑标签后,几分钟内就会发布答案;不是每个人都订阅特定于版本的标签。 [其中一些只是时区效应,但我以前见过这种情况很多次。]
标签: python python-2.7