Python无库实现CSV文件读取至内存的问题求助
问题解决:csv_list is not defined 错误及CSV转字典修正
错误原因
- 变量作用域问题:
csv_list是read_csv函数内部的局部变量,函数外部无法直接访问,且原函数没有返回该变量,导致后续解构代码找不到它。 - 函数调用参数错误:调用
read_csv(task1.csv)时,task1.csv未加引号,Python会将其视为变量而非文件名字符串。 - 字典推导式变量冲突:
{key: value for key, value in zip(header, values)}里的key和外层循环的key重名,会导致逻辑混乱,无法正确映射表头和值。
修正后的完整代码
def read_csv(file_name): with open(file_name) as f: # 读取每行数据并分割处理,返回二维列表 return [[val.strip() for val in r.split(",")] for r in f.readlines()] # 调用函数并接收返回的csv数据列表 csv_list = read_csv("task1.csv") # 将数据转换为字典结构 (_, *header), *data = csv_list csv_dict = {} for row in data: key, *values = row # 使用不同临时变量避免命名冲突,正确映射表头和对应值 csv_dict[key] = {h: v for h, v in zip(header, values)}
关键修正点说明
- 让
read_csv函数返回处理后的二维列表,外部代码通过接收返回值获取csv_list。 - 调用函数时传入带引号的文件名字符串,确保Python识别为文件路径。
- 字典推导式改用
h和v作为临时变量,避免与外层循环的key变量冲突,保证表头和数据值的对应关系正确。
内容的提问来源于stack exchange,提问作者d_allen
相关产品推荐
相关产品推荐

