使用csv.DictReader提取CSV positive字段值返回空列表问题排查
问题分析与修复方案
嘿,你的代码里有两个明显的小问题,导致最后得到空列表,我给你拆解下:
错误原因
- 循环变量搞混了:在
for n in csv_reader里,n是CSV里的每一行数据,是个字典对象,不是字段名哦!所以if n == 'positive'这个条件永远不会成立——一个字典怎么可能等于字符串'positive'呢?循环里的逻辑根本没跑起来。 - 字段访问方式错了:就算条件能过,
csv_reader[n]这种写法也不对。要拿某一行的positive字段内容,得用n['positive'](也就是当前行字典的键),不是通过csv_reader去索引。另外,CSV里的空值一般是空字符串,不是None,用!= None判断空值也抓不到实际的空内容。
修正后的代码
我把代码调整了下,直接遍历每一行,取出positive字段的值,再过滤掉空内容:
import csv with open('pos_neg_cleaned.csv', 'r') as csv_file: csv_reader = csv.DictReader(csv_file) positive_list = [] for row in csv_reader: # 取出当前行的positive字段内容 pos_content = row['positive'] # 过滤掉空字符串和纯空格的内容 if pos_content.strip(): positive_list.append(pos_content)
额外小提示
- 如果你的CSV里有些行可能没有
positive字段(怕报KeyError),可以用row.get('positive', '')来获取,这样就算字段不存在,也会返回空字符串,不会报错:
pos_content = row.get('positive', '')
- 如果只是想把所有
positive字段的内容都加进去(哪怕是空的),直接去掉判断条件,写positive_list.append(row['positive'])就行。
内容的提问来源于stack exchange,提问作者bboyenergetic
相关产品推荐
相关产品推荐

