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

使用Python脚本去除CSV文件重复行并更新原文件

没问题!要直接在原myfile.csv文件上去除重复行、不生成额外文件的话,这里有几个实用的方案,你可以根据自己的操作系统和需求选:


方法1:Python脚本(跨平台,保留原始行顺序)

这个方案在Windows、Linux、macOS上都能用,而且会保留每行第一次出现的顺序,适合大多数场景:

# 先读取文件内容,筛选出不重复的行
seen = set()
unique_lines = []

# 打开文件读取,注意编码如果不是utf-8可以调整成对应的,比如gbk
with open('myfile.csv', 'r', encoding='utf-8') as f:
    for line in f:
        # 去掉换行符后判断重复,避免因为换行符格式差异误判
        stripped_line = line.rstrip('\n')
        if stripped_line not in seen:
            seen.add(stripped_line)
            unique_lines.append(line)

# 重新写入原文件,覆盖原有内容
with open('myfile.csv', 'w', encoding='utf-8') as f:
    f.writelines(unique_lines)

如果你的CSV有表头,不想让表头参与去重,可以稍微修改脚本,单独保留表头:

with open('myfile.csv', 'r', encoding='utf-8') as f:
    # 读取第一行表头
    header = next(f)
    seen = set()
    unique_lines = [header]
    
    for line in f:
        stripped_line = line.rstrip('\n')
        if stripped_line not in seen:
            seen.add(stripped_line)
            unique_lines.append(line)

with open('myfile.csv', 'w', encoding='utf-8') as f:
    f.writelines(unique_lines)

方法2:Linux/macOS 命令行方案

如果你用的是类Unix系统,可以用命令行快速处理:

方案2.1:用sponge(简单直观)

sponge是moreutils工具包中的命令,它会先把输入内容全部读取完毕,再写入目标文件,避免直接重定向导致的文件清空问题。

首先安装moreutils(如果没装的话):

# Debian/Ubuntu 系列
sudo apt install moreutils

# macOS(用Homebrew)
brew install moreutils

然后执行去重命令:

# 去重并保留唯一行(会排序)
sort -u myfile.csv | sponge myfile.csv

如果有表头,不想排序表头,可以这样:

# 保留表头,只对内容行去重排序
{ head -n1 myfile.csv; tail -n+2 myfile.csv | sort -u; } | sponge myfile.csv

方案2.2:用awk+临时文件(无需额外安装工具)

如果不想装moreutils,可以用awk配合临时文件实现,执行完临时文件会自动替换原文件:

# 保留原始行顺序去重,不排序
awk '!seen[$0]++' myfile.csv > tmp_file && mv tmp_file myfile.csv

解释一下:awk会记录每行是否出现过(seen[$0]++),没出现过的行就会被打印到临时文件,最后用临时文件替换原文件,全程不会留下额外的文件。


⚠️ 重要提醒:不管用哪种方法,操作原文件前一定要先备份,比如执行cp myfile.csv myfile_backup.csv,避免意外情况导致数据丢失!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:51:05