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

如何实现doc.txt中重复计数编码字符串的解码并写入doc1.txt?

重复计数编码字符串解码实现方案

完整修复代码

def decode_txt(origin, destination):
    # 使用with语句自动管理文件资源,无需手动关闭
    with open(origin, "r") as f, open(destination, "w") as h:
        # 读取源文件内容并去除首尾空白字符(如换行、空格)
        encoded_content = f.read().strip()
        decoded_parts = []
        current_digits = []
        
        for char in encoded_content:
            if char.isdigit():
                # 收集连续的数字字符(支持多位数计数,比如10A)
                current_digits.append(char)
            else:
                # 转换数字为整数,无数字时默认重复1次
                repeat_count = int(''.join(current_digits)) if current_digits else 1
                # 将字符重复对应次数后加入结果列表
                decoded_parts.append(char * repeat_count)
                # 重置数字收集器,准备处理下一组
                current_digits = []
        
        # 拼接所有解码后的片段并写入目标文件
        h.write(''.join(decoded_parts))

关键逻辑说明

  1. 文件资源管理:用with语句操作文件,会在代码块执行完毕后自动关闭文件,避免资源泄漏问题,比手动调用close()更可靠。
  2. 解码核心逻辑:
    • 用current_digits列表收集连续的数字字符,兼容多位数计数场景(比如12B会被解码为BBBBBBBBBBBB)。
    • 遍历编码字符串时,遇到数字就存入current_digits,遇到字母则将之前收集的数字转为整数,把字母重复对应次数后存入结果列表。
    • 处理无数字的单个字符(比如示例中的T):此时current_digits为空,默认重复1次,直接保留原字符。
  3. 性能优化:用列表decoded_parts存储解码片段,最后用''.join()拼接,比直接拼接字符串更高效(Python中字符串不可变,多次拼接会生成新对象,列表拼接仅需一次内存分配)。

测试验证

如果源文件doc.txt内容为2A4CT2A2C,执行函数后doc1.txt会生成内容:AACCCCTAACC,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:40:32