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

如何使用Python 3向CSV文件的指定单元格写入数据?

实现说明

对应需要写入成绩的区域示意图:
成绩文件示意图

CSV 是纯文本格式,本身没有「单元格」的结构化定义,无法直接原地修改指定位置的内容,可行的实现逻辑是:先将整个 CSV 文件内容读取到内存的二维结构中,修改对应位置的数值后,再整体写回原文件即可。

方法1:使用Python标准库csv实现(无需安装额外依赖,适合作业场景)

你只需要提前确认要写入的成绩区域对应的行列索引(索引从0开始计数,第一行表头行索引为0,第一列序号列索引为0,以此类推),示例代码如下:

import csv
import random

# 替换为你的CSV文件实际路径
csv_file_path = "scores.csv"

# 按照示意图的结构配置写入范围:
# 学生行范围:第2行到第6行 → 对应索引1到5
target_row_start = 1
target_row_end = 5
# 成绩列范围:第3列到第5列(语文、数学、英语)→ 对应索引2到4
target_col_start = 2
target_col_end = 4

# 1. 读取全量CSV数据到二维列表
csv_data = []
with open(csv_file_path, mode="r", encoding="utf-8") as f:
    reader = csv.reader(f)
    for row in reader:
        csv_data.append(row)

# 2. 写入随机成绩到指定区域
for row_idx in range(target_row_start, target_row_end + 1):
    # 补全行长度,避免索引越界报错
    while len(csv_data[row_idx]) < target_col_end + 1:
        csv_data[row_idx].append("")
    for col_idx in range(target_col_start, target_col_end + 1):
        # 这里可以替换为你自己的随机成绩生成逻辑
        csv_data[row_idx][col_idx] = str(random.randint(0, 100))

# 3. 计算平均分(可替换为你自己的计算逻辑)
avg_col_idx = target_col_end + 1
for row_idx in range(target_row_start, target_row_end + 1):
    score_list = [int(csv_data[row_idx][col]) for col in range(target_col_start, target_col_end + 1)]
    avg_score = round(sum(score_list) / len(score_list), 2)
    # 补全列长度
    while len(csv_data[row_idx]) < avg_col_idx + 1:
        csv_data[row_idx].append("")
    csv_data[row_idx][avg_col_idx] = str(avg_score)

# 4. 写回原CSV文件
with open(csv_file_path, mode="w", encoding="utf-8", newline="") as f:
    writer = csv.writer(f)
    writer.writerows(csv_data)

方法2:使用pandas实现(代码更简洁)

如果允许使用第三方库,安装pandas后可以更简单地实现指定区域的修改:
首先执行安装命令:pip install pandas
示例代码:

import pandas as pd
import random

df = pd.read_csv("scores.csv")
student_count = 5 # 对应5个学生
score_columns = ["语文", "数学", "英语"] # 替换为你实际的成绩列名

# 写入随机成绩
for i in range(student_count):
    df.loc[i, score_columns] = [random.randint(0, 100) for _ in range(len(score_columns))]

# 计算平均分
df["平均分"] = df[score_columns].mean(axis=1).round(2)

# 写回原文件
df.to_csv("scores.csv", index=False)
注意事项
  • 操作前建议备份原CSV文件,避免错误操作覆盖原始数据
  • 如果读取文件出现中文乱码,可将encoding参数修改为gbk重试
  • 确认行列索引和你实际的CSV结构匹配,避免写入位置错误

内容的提问来源于stack exchange,提问作者Eduardo Pérez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:24:10