如何创建包含空csv字段作为无的字典?

时间:2019-04-03 07:12:31

标签: python csv

我有一个这样的csv文件:

id,subid
1,a
2
3,c
4

当我将其映射到字典时,将按以下方式创建字典:

{'1':'a'}
{'3':'c'}

当前,它会跳过带有空subid的那些。我希望将空的显示为None

我当前的代码:

import csv
reader = csv.reader(open('filename.txt', encoding='utf-8', mode='r'))
for row in ricom:
   d={}
   try:
       d = {row[0]:row[15]}
       print(d)
   except IndexError:
       pass    

我正在执行tryexcept,因为如果某些字段为空,则row[15]会抛出index list out of range

我想要的输出应该是:

{'1':'a'}
{'2': None}
{'3': 'c'}
{'4': None}

注意:csv中有20多个列,但我仅以两个列为例。

P.S:csv文件为excel格式。我的意思是filename.csv。我想应该没关系!非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

使用csv.DictReader

例如:

import csv

with open(filename) as infile:
    reader = csv.DictReader(infile)
    for row in reader:
        print({row["id"]: row.get("subid")})

输出:

{'1': 'a'}
{'2': ''}
{'3': 'c'}
{'4': ''}

答案 1 :(得分:1)

我将使用csv.DictReader来读取数据。然后,您可以按照以下方式使用dict.get

with open('filename.txt', encoding='utf-8', mode='r') as f:
    reader = csv.DictReader(f)
    d = {row['id']: row.get('subid') for row in reader}

print(d)
#  {'1': 'a', '2': None, '3': 'c', '4': None}