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

Python实现文件中重复字符的高效去除方案咨询

全局去除文件中重复字符的高效方案

明确需求:全局去除所有重复字符,保留每个字符第一次出现的顺序——你的第一段代码能实现目标但效率偏低,正则方案仅能处理连续重复字符,不符合全局去重要求。

高效实现思路

一次性读取文件全部内容到内存,利用Python 3.7+字典「键有序且唯一」的特性,快速完成去重并保留字符出现顺序,最后一次性写入结果文件。这种方式大幅减少了频繁的IO操作,内存处理效率远高于逐字符读取的方案。

代码实现

with open("test.txt", "r") as f1, open("test1.txt", "w") as f2:
    content = f1.read()
    # 借助dict.fromkeys自动去重,同时保留字符第一次出现的顺序
    unique_chars = dict.fromkeys(content)
    # 拼接成字符串后写入文件
    f2.write(''.join(unique_chars))

如果需要兼容Python 3.6及以下版本(该版本字典无序),可以使用collections.OrderedDict:

from collections import OrderedDict

with open("test.txt", "r") as f1, open("test1.txt", "w") as f2:
    content = f1.read()
    unique_chars = OrderedDict.fromkeys(content)
    f2.write(''.join(unique_chars))

效果验证

针对你的测试文件内容:

this is Rdaaaa
thissss Is Sethaaa
hiii

处理后结果为:this Rd\nI Seh(每个字符仅保留第一次出现的实例,后续重复字符全部去除)。

效率对比

  • 原逐字符方案:每次读取1个字符,频繁触发IO操作,大文件场景下速度极慢。
  • 本方案:仅执行两次IO(读、写各一次),内存中通过字典去重的时间复杂度为O(n),效率提升明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:36:10