蜘蛛幽灵 2021-09-10 20:28 采纳率: 91.7%
浏览 74
已结题

文件夹处理和排序,编码问题内容

将1文件夹里的每个txt的所有文字,
去除数字空格和符号,英文大写变小写,以原文件名,以txt文件存入2文件夹。
然后2文件夹里的每个txt文件内容,字母数不是3的倍数的在最后补a补成3的倍数,以txt格式存入3文件夹。
将3文件夹里的每个txt文件内容,前后翻转,即abc变成cba,以txt存入4文件夹。
以a文件夹里的a.txt做为字典,对4文件夹的每个txt文件内容进行编码处理,即字典:'abc'='a',文件内abcabc翻译为aa,将翻译后的字母以txt格式存入文件夹5。

使用python
处理后,截图看看
即0文件夹
1.txt :?Aaabb bcccd
2.txt :aaA BbbccCde
3.txt :Cccbb baaad
a文件夹
a.txt :aaa=x,bbb=y,ccc=z,daa=t,dea=u

使用python,展示运行结果

  • 写回答

1条回答 默认 最新

  • 程序媛一枚~ Python领域新星创作者 2021-09-11 19:33
    关注

    博主:a.txt里的 daa =t dea= u 应该是aad=t,aed=u
    运行图如下:

    img

    import math
    import os
    import re
    
    
    # 遍历文件,按特定规则处理
    def trans(root_dir):
        if not os.path.exists("2/"):
            os.makedirs("2/")
        if not os.path.exists("3/"):
            os.makedirs("3/")
        if not os.path.exists("4/"):
            os.makedirs("4/")
        if not os.path.exists("5/"):
            os.makedirs("5/")
    
        # 读取字典 0/a.txt
        dict = {}
        with open("a/a.txt", "r", encoding='utf-8') as f:
            str5 = f.read()
            print('0/a.txt: ', str5)
            str5_ = str(str5).split(",")
            for i in str5_:
                keys = str(i).split("=")
                dict[keys[0]] = keys[1]
        print(dict)
    
        for f in os.listdir(root_dir):
            if f.endswith(".txt"):
                f_name = os.path.splitext(f)[0]
                f_path = os.path.join(root_dir, f)
    
                # 读取原始文件并处理
                with open(f_path, "r") as f:  # 打开文件
                    str1 = f.read()  # 读取文件
    
                print('原始文件:', f_path)
                with open("1/" + str(f_name) + ".txt", "r") as f:  # 打开文件
                    str1 = f.read()  # 读取文件
                    print('str1: ', str1)
    
                # 匹配所有小写字母
                str2 = ''.join(re.findall(r"[a-z]+", str(str1).replace(" ", '').lower()))
                print('str2: ', str2)
    
                with open("2/" + str(f_name) + ".txt", "w") as f:
                    f.write(str2)  # 自带文件关闭功能,不需要再写f.close()
    
                # 不是3的倍数,填充'a'
                str3 = str2.ljust(math.ceil(len(str2) / 3.0) * 3, 'a')
                print('str3: ', str3)
                with open("3/" + str(f_name) + ".txt", "w") as f:
                    f.write(str3)  # 自带文件关闭功能,不需要再写f.close()
    
                # 字符串翻转
                str4 = str(str3)[::-1]
                print('str4: ', str4)
                with open("4/" + str(f_name) + ".txt", "w") as f:
                    f.write(str4)  # 自带文件关闭功能,不需要再写f.close()
    
    
    
                str5 = ''
                for i in range(len(str4) // 3):
                    str5 = str5 + dict[str4[i * 3:(i + 1) * 3]]
                with open("5/" + str(f_name) + ".txt", "w") as f:
                    f.write(str5)  # 自带文件关闭功能,不需要再写f.close()
                print('str5: ', str5)
    
    
    trans("1/")
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月11日
  • 已采纳回答 9月11日
  • 修改了问题 9月10日
  • 创建了问题 9月10日

悬赏问题

  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟