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

Python CSV操作:如何将指定单元格内容写入上一行同位置单元格

实现CSV指定单元格内容向上一行同位置追加

原代码与问题场景

原Python处理代码:

import csv
with open('timetable.csv', newline='') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        rowId = row[0]
        pmp = row[1]

        for item in row:
            if item != "" and "/" in item:
                class = item
                editRow = row[0] - 1

当前CSV内容(标准逗号分隔格式):

1,name,-----,class,-----
2,,,,class_id / class_name,,

需求:定位第2行中包含class_id / class_name的单元格,将该内容追加到第1行同一位置的单元格中,使第1行对应位置变为class / class_id / class_name,最终期望输出:

1,name,-----,class / class_id / class_name,-----
2,,,,class_id / class_name,,

修正后的可运行代码

import csv

# 先读取所有行数据到列表,方便修改
rows = []
with open('timetable.csv', newline='') as csvfile:
    reader = csv.reader(csvfile)
    rows = list(reader)

# 从第二行开始遍历(索引1,列表从0开始计数)
for i in range(1, len(rows)):
    current_row = rows[i]
    prev_row = rows[i-1]
    # 遍历当前行每个单元格
    for idx, item in enumerate(current_row):
        if item.strip() != "" and "/" in item:
            # 追加内容到上一行同位置,保留原有内容并拼接
            if prev_row[idx].strip():
                prev_row[idx] = f"{prev_row[idx]} / {item}"
            else:
                prev_row[idx] = item
            break  # 假设仅存在一个目标单元格,找到后停止遍历

# 将修改后的数据写回CSV文件
with open('timetable.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerows(rows)

核心修正说明

  • 原代码仅读取CSV未执行写入操作,无法修改文件内容
  • 新增了全量行数据存储,解决无法追溯上一行内容的问题
  • 避免使用Python关键字class作为变量名
  • 通过索引精准定位行和单元格位置,确保内容追加到正确位置
  • 增加了空值判断,避免出现多余分隔符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:45:10