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

文本文件重复内容处理需求:将出现3次的内容替换为唯一内容

解决方案:文本内容均衡调整工具

核心思路

  • 解析文件每行的两个元素,统计所有元素的出现频次
  • 定位出现3次的重复元素和仅出现1次的稀缺元素
  • 遍历文件行,找到包含重复元素的行,选择不会导致行内重复的稀缺元素完成替换(仅替换一次)
  • 保证替换后无行内重复,且实现内容频次均衡

Python 实现代码

def balance_content(file_path):
    # 读取文件并过滤空行
    with open(file_path, 'r', encoding='utf-8') as f:
        lines = [line.strip() for line in f if line.strip()]
    
    # 统计每个元素的出现次数
    element_counts = {}
    for line in lines:
        elem1, elem2 = line.split('-')
        element_counts[elem1] = element_counts.get(elem1, 0) + 1
        element_counts[elem2] = element_counts.get(elem2, 0) + 1
    
    # 筛选目标替换元素和候选元素
    target_elem = None
    candidate_elems = []
    for elem, count in element_counts.items():
        if count == 3:
            target_elem = elem
        elif count == 1:
            candidate_elems.append(elem)
    
    # 无符合条件的元素,直接返回原内容
    if not target_elem or not candidate_elems:
        return lines
    
    # 遍历找到第一个可替换的行
    modified = False
    for idx, line in enumerate(lines):
        a, b = line.split('-')
        # 处理行首是目标元素的情况
        if a == target_elem:
            for candidate in candidate_elems:
                if candidate != b:
                    lines[idx] = f"{candidate}-{b}"
                    modified = True
                    break
        # 处理行尾是目标元素的情况
        elif b == target_elem:
            for candidate in candidate_elems:
                if candidate != a:
                    lines[idx] = f"{a}-{candidate}"
                    modified = True
                    break
        if modified:
            break
    
    return lines

# 调用示例
if __name__ == "__main__":
    # 替换为你的输入文件路径
    input_file = "input.txt"
    result_lines = balance_content(input_file)
    # 将结果写入输出文件
    with open("output.txt", 'w', encoding='utf-8') as f:
        f.write('\n'.join(result_lines))

代码关键说明

  1. 文件处理:使用with语句自动管理文件资源,避免手动关闭文件的麻烦
  2. 频次统计:通过字典快速统计每个元素的出现次数,时间复杂度O(n)
  3. 替换逻辑:优先选择第一个可替换的行,遍历候选元素确保替换后行内无重复,避免出现Alex-Alex这类无效行
  4. 安全输出:将结果写入新文件,不会覆盖原始文件,方便对比验证

示例验证

输入文件input.txt内容:

John-Alex
John-Kyle
John-Ben
Ben-Gary

运行代码后可能得到的输出(符合要求的一种结果):

John-Alex
Alex-Kyle
John-Ben
Ben-Gary

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:00:47