如何不使用pandas过滤CSV文件指定列内以"A"开头的元素?
问题原因
原代码的判断逻辑if "A" in row["Composer"]是筛选所有作曲家名称中包含字母A的条目,而非以A开头的条目,因此无法得到预期结果。
修正后代码(无需引入pandas)
import csv list_a = [] with open('bl_printed_music_500.csv', newline = '', encoding = 'utf-8-sig') as csvfile: reader = csv.DictReader(csvfile) for row in reader: # 先去除首尾空白字符,避免名称开头带空格导致判断失效 composer_name = row["Composer"].strip() # 使用startswith方法判断是否以字母A开头 if composer_name.startswith("A"): list_a.append(row["Composer"]) print(list_a)
可选优化说明
- 如需同时匹配小写字母a开头的条目,可将判断条件修改为
composer_name.lower().startswith("a") - 若确认CSV中Composer列不存在开头空白字符,可直接省略strip()步骤,直接写
if row["Composer"].startswith("A")即可
内容的提问来源于stack exchange,提问作者Sasha
相关产品推荐
相关产品推荐

