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
相关产品推荐
相关产品推荐

