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

