运行CSV文件触发NameError:name 'name'未定义问题排查求助
问题排查与解决
核心报错原因
你执行命令时犯了低级错误:你运行的是CSV文件而非Python脚本文件。
当你输入python before.csv,Python会把CSV文件的内容当作Python代码解析,而CSV第一行是name,house,这在Python语法里是无效语句,自然抛出NameError: name 'name' is not defined。
正确操作步骤:
- 将你的Python代码保存为单独的脚本文件,比如
scourgify.py - 执行命令:
python scourgify.py
代码本身的两处修正点
除了执行命令的错误,你的代码还有两个细节问题需要调整:
- 姓名拆分顺序颠倒:CSV里的
name字段格式是姓, 名(比如Potter, Harry),你当前代码把拆分后的第一个值赋值给first、第二个给last,会导致姓和名完全搞反,应该交换赋值顺序。 - 拆分后姓名带多余空格:直接用
split(',')拆分可能会让姓名保留前置空格,需要做空格清理。
修正后的代码:
import csv students = [] with open("before.csv") as file: reader = csv.DictReader(file) for row in reader: # 按逗号加空格拆分,限制拆分次数避免姓名含逗号的异常情况 last, first = row["name"].strip().split(', ', 1) # 确保姓名无多余空格,再存入字典 students.append({"first": first.strip(), "last": last.strip(), "house": row["house"]}) print(students)
内容的提问来源于stack exchange,提问作者Jay Z
相关产品推荐
相关产品推荐

