You need to enable JavaScript to run this app. Python抽认卡开发:CSV导入列表项与输入if比对始终返回错误
优惠活动
大模型
产品
解决方案
定价
更多

Python抽认卡开发:CSV导入列表项与输入if比对始终返回错误

核心问题定位
  • 逐行读取时残留不可见换行符:用open()直接逐行读文件时,每行结尾的换行符(\n或Windows环境下的\r\n)会被并入字符串内容。你用逗号拆分后,存储到A列表里的答案末尾会自带这个看不见的换行符,和用户输入的无换行内容永远匹配不上。你测试用硬编码的"1"时没有多余字符,因此比对可以正常运行。
  • 原生逗号拆分的额外风险:如果CSV内的问题或答案本身包含逗号,直接用split(",")会出现拆分错位,不过你当前遇到的比对错误优先由换行符问题导致。
可落地修复方案
  • 第一优先级先清理行首尾字符:在循环读取每行时,先处理掉行尾的换行符,再做拆分,修改后的读取代码如下:
    with open("List_Questions_Answers.csv", "r", encoding="utf-8") as data:
        Q = []
        A = []
        next(data)
        for line in data:
            line = line.strip()
            q, a = line.split(",")
            Q.append(q)
            A.append(a)
    
    如果需要保留答案首尾的有效空格,可以将line.strip()替换为line.rstrip("\r\n"),仅清理行尾的换行符,不改动其他内容
  • 更稳妥的CSV处理方式:直接使用Python内置的csv模块,自动兼容CSV标准格式(自动处理字段内逗号、引号、换行等问题),不会出现多余字符残留,示例代码:
    import csv
    Q = []
    A = []
    with open("List_Questions_Answers.csv", "r", encoding="utf-8") as data:
        reader = csv.reader(data)
        next(reader) # 跳过表头
        for row in reader:
            Q.append(row[0])
            A.append(row[1])
    
  • 快速定位验证:如果想快速确认问题,可以在比对逻辑前打印repr(A[1]),即可看到A[1]字符串中包含的所有不可见特殊字符,直接验证问题原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 12:45:02