如何用Python删除含段落文本的CSV文件首行?
解决CSV含段落文本时删除首行的问题
你的代码失效的核心原因是:CSV中带段落的单元格会包含换行符,直接用split("\n")会把单个单元格的内容拆成多个列表元素,导致data[0]并不是完整的首行,删除操作自然无法正确移除真正的表头行。
正确的做法是用Python内置的csv模块,它会严格按照CSV规范解析内容,自动处理带换行的单元格:
方法1:写入新文件
import csv # 打开原文件和输出文件 with open("file.csv", "r", newline="", encoding="utf-8") as infile, open("output.csv", "w", newline="", encoding="utf-8") as outfile: # 创建CSV读写对象 reader = csv.reader(infile) writer = csv.writer(outfile) # 跳过首行(表头) next(reader) # 将剩余所有行写入新文件 writer.writerows(reader)
方法2:直接覆盖原文件(更安全的方式)
如果不想保留原文件,可以先写入临时文件,再替换原文件,避免读写冲突导致数据丢失:
import csv import os # 临时文件路径 temp_path = "temp_csv_file.csv" # 读取原文件并写入临时文件(跳过首行) with open("file.csv", "r", newline="", encoding="utf-8") as infile, open(temp_path, "w", newline="", encoding="utf-8") as outfile: reader = csv.reader(infile) writer = csv.writer(outfile) next(reader) writer.writerows(reader) # 用临时文件替换原文件 os.replace(temp_path, "file.csv")
为什么这个方法有效?
csv.reader会识别CSV的结构,即使单元格内包含换行符,也会将整个单元格内容作为一个字段,不会错误拆分行。next(reader)会精准跳过第一行(表头),剩下的所有行都能完整保留原有格式(包括带段落的单元格)。
内容的提问来源于stack exchange,提问作者Nuriyantodev
相关产品推荐
相关产品推荐

