You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CS50p作业6 Scourgify:scourgify.py未生成指定格式CSV求助

排查scourgify.py的check50格式错误问题

你的代码有两个关键问题导致check50判定格式错误:

1. 命令行参数判断逻辑完全颠倒

你当前的参数判断代码里,提示信息和条件完全不匹配:

if len(sys.argv) > 3:
    sys.exit("Too few command-line arguments")
elif len(sys.argv) < 3:
    sys.exit("Too many command-line arguments")
  • 当输入参数超过3个(比如4个),应该提示"Too many command-line arguments"
  • 当输入参数不足3个(比如1个),应该提示"Too few command-line arguments"

修正后:

if len(sys.argv) < 3:
    sys.exit("Too few command-line arguments")
elif len(sys.argv) > 3:
    sys.exit("Too many command-line arguments")

2. 姓名分割顺序颠倒且未限制分割次数

原before.csv的name列格式是「姓氏, 名字」(比如Potter, Harry),但你当前代码把分割后的第一个元素赋值给了first,第二个给了last,直接搞反了列内容。另外如果姓氏里包含逗号(比如Stark, Jr., Tony),无限制的split会导致解包失败。

修正方式:限制只分割第一次出现的逗号,同时修正赋值顺序:

last, first = row["name"].split(",", 1)
first = first.strip()
last = last.strip()

修正后的完整代码

import csv
import sys

def main():
    # 检查命令行参数数量
    if len(sys.argv) < 3:
        sys.exit("Too few command-line arguments")
    elif len(sys.argv) > 3:
        sys.exit("Too many command-line arguments")

    # 检查是否为csv文件
    if not (sys.argv[1].endswith(".csv") and sys.argv[2].endswith(".csv")):
        sys.exit("Not a .csv file")

    # 读取输入文件并处理
    try:
        with open(sys.argv[1], "r") as input_file, open(sys.argv[2], "w") as output_file:
            reader = csv.DictReader(input_file)
            writer = csv.DictWriter(output_file, fieldnames=["first", "last", "house"])
            writer.writeheader()

            for row in reader:
                # 只分割第一个逗号,处理姓氏含逗号的情况,同时修正顺序
                last_name, first_name = row["name"].split(",", 1)
                writer.writerow({
                    "first": first_name.strip(),
                    "last": last_name.strip(),
                    "house": row["house"]
                })
    except FileNotFoundError:
        sys.exit(f"Could not read {sys.argv[1]}")

if __name__ == "__main__":
    main()

内容的提问来源于stack exchange,提问作者Andy Zheng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:52:44