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

如何将用户输入追加到无表头索引的现有CSV文件?求writelines替代方案

解决CSV追加内容的问题

你当前代码的核心问题有两个:一是writelines的用法不对(它接收可迭代的字符串序列,而非单个字符串),二是没给新内容加换行符,会导致新输入和原有内容挤在同一行,同时每次循环重复打开关闭文件也没必要。

给你两种实用的替代方案:

方案1:用write()直接追加(简单场景)

把writelines换成write,给输入内容加上换行符,同时将文件打开操作移到循环外,减少IO开销:

if user_input == 'add':
    x = int(input('How many questions do you want to add?'))
    # 只打开一次文件
    with open("pyquiz.csv", 'a') as f:
        for _ in range(x):
            new_question = input('Enter your question: \n')
            # 写入内容并强制换行,确保每行独立
            f.write(f"{new_question.strip()}\n")

如果用户输入时可能带多余换行,用strip()先清理,避免生成空行。

方案2:用内置csv模块(规范场景)

如果你的CSV字段可能包含逗号、引号这类特殊字符,手动拼接会破坏CSV格式,用csv.writer能自动处理这些情况:

import csv

if user_input == 'add':
    x = int(input('How many questions do you want to add?'))
    # newline=''避免不同系统下换行符混乱
    with open("pyquiz.csv", 'a', newline='') as f:
        writer = csv.writer(f)
        for _ in range(x):
            new_question = input('Enter your question (comma-separated): \n')
            # 将输入拆分为字段列表
            row = new_question.split(',')
            writer.writerow(row)

比如输入字段是"hi, there",csv.writer会自动用引号包裹,防止CSV解析出错。

另外注意:你原本用的a+是可读可写模式,但这里只需要追加内容,用a模式足够,更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:07:40