Python中csv.DictReader对象不可下标访问的问题解决求助
解决csv.DictReader的TypeError错误:"'DictReader' object is not subscriptable"
问题原因
csv.DictReader是可迭代的行集合对象,并非单个字典,不能直接用my_dictionary['Name']这种下标语法访问数据。循环中的row变量才是对应每行的字典,要获取每行的Name值,必须通过row来访问。
你的原始代码
import csv my_dictionary = csv.DictReader(open('test_data.csv')) for row in my_dictionary: print(my_dictionary['Name'])
你的test_data.csv内容
Name,number,Colors John,2,blue Logan,3,red Jimmy,4,green Logan,6,green Steven,8,orange
修正后的代码
推荐使用with语句自动管理文件句柄,避免资源泄漏:
import csv with open('test_data.csv', 'r') as file: reader = csv.DictReader(file) # 收集所有Name值并按期望格式输出 names = [row['Name'] for row in reader] print(', '.join(names))
如果需要逐行处理后再拼接输出,也可以写成:
import csv with open('test_data.csv', 'r') as file: reader = csv.DictReader(file) names = [] for row in reader: names.append(row['Name']) print(', '.join(names))
正确输出
John, Logan, Jimmy, Logan, Steven
内容的提问来源于stack exchange,提问作者Logan Nelson
相关产品推荐
相关产品推荐

