【发布时间】:2015-09-26 12:11:34
【问题描述】:
我正在通过 csv.DictReader 读取 csv 并尝试用 None 值替换任何空值。 DictReader 似乎将该文件作为字典的实例,其中 CSV 的每一行都是字典(我可以接受)。但是,当我尝试逐行/字典遍历它并用None 替换任何空值("")时,我似乎陷入了困境。我以前写过这样的列表理解:
for row in data:
row = [None if not x else x for x in row]
但我需要改用字典而不是列表。我以前没有任何字典理解的经验,但是当我尝试将它扩展到字典时,我就是无法让它工作。我的想法是这样的:
for row in data:
row.values() = [None if not x else x for x in row.values()}
但我只收到SyntaxError: invalid syntax.。我已经尝试了很多其他的东西(这里列出的太多了),比如:
for row in data:
row = {k:None for k,v in row if v not v else v}
但这似乎有同样的问题。
作为参考,我的数据如下:
{'colour': 'ab6612', 'line': '1', 'name': 'Baker', 'stripe': ''}
{'colour': 'f7dc00', 'line': '3', 'name': '', 'stripe': 'FFFFFF'}
理想情况下最终会是:
{'colour': 'ab6612', 'line': '1', 'name': 'Baker', 'stripe': None}
{'colour': 'f7dc00', 'line': '3', 'name': None, 'stripe': 'FFFFFF'}
【问题讨论】:
-
谢谢大家,{k:(v if v else None) for k,v in row.items()} 正是我想要的。我没有意识到我可以像这样嵌套 (v if v else None) 。欣赏它。
标签: python csv dictionary list-comprehension nonetype