我有一个这样的csv文件:
id,subid
1,a
2
3,c
4
当我将其映射到字典时,字典的创建方式如下:
{'1':'a'}
{'3':'c'}
目前,它跳过带有空子id的那些。我希望空的显示为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
我正在做try
和except
因为如果没有row[15]
会抛出一个index list out of range
因为某些字段是空的。
我想要的输出应该是这样的:
{'1':'a'}
{'2': None}
{'3': 'c'}
{'4': None}
注意:csv 中有 20 多列,但我只举了两列作为示例。
PS:csv文件是excel格式。我的意思是filename.csv
.我想反正应该没关系!任何帮助都非常感谢。
我会使用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}
使用 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': ''}