GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 2368|回复: 27
收起左侧

[实用工具] 【英雄再聚】[python脚本]统计文件夹内字符数量

[复制链接] |关注本帖
     楼主| White_sky 发表于 2024-10-2 16:32:29 | 显示全部楼层 |阅读模式 <
    这是之前做汉化的时候写的一个脚本,效果是统计一个文件夹内的所有excel表格/word文档/txt文件
    内中/英/日文的字符数量(只有这三种的原因是因为我只会汉这三种),诞生的原因是我想知道自己汉了多少工程量


    以下是效果图



    可能有BUG,因为我压根就没用过多少次。
    (pyhthon脚本应该不需要结印了吧)
    1. import os
    2. import re
    3. from docx import Document
    4. from openpyxl import load_workbook

    5. # 统计中文、英文、日文字符的函数
    6. def count_characters(text):
    7.     # 去掉不可见字符,例如换行符、空格等
    8.     text = re.sub(r'\s', '', text)  # 移除所有空白字符,包括空格、换行符、制表符等
    9.     # 改进的正则表达式,只匹配平假名和片假名
    10.     chinese_count = len(re.findall(r'[\u4e00-\u9fff]', text))
    11.     english_count = len(re.findall(r'[a-zA-Z]', text))
    12.     japanese_count = len(re.findall(r'[\u3040-\u309f\u30a0-\u30ff]', text))  # 平假名和片假名
    13.     return chinese_count, english_count, japanese_count

    14. # 处理 Word 文档
    15. def process_word(file_path):
    16.     chinese_total = english_total = japanese_total = 0
    17.     try:
    18.         doc = Document(file_path)
    19.         for para in doc.paragraphs:
    20.             chinese, english, japanese = count_characters(para.text)
    21.             chinese_total += chinese
    22.             english_total += english
    23.             japanese_total += japanese
    24.     except Exception as e:
    25.         print(f"Error processing Word file {file_path}: {e}")
    26.     return chinese_total, english_total, japanese_total

    27. # 处理 Excel 表格
    28. def process_excel(file_path):
    29.     chinese_total = english_total = japanese_total = 0
    30.     try:
    31.         workbook = load_workbook(file_path, read_only=True)
    32.         for sheet in workbook.worksheets:
    33.             for row in sheet.iter_rows(values_only=True):
    34.                 for cell in row:
    35.                     if cell is not None:
    36.                         chinese, english, japanese = count_characters(str(cell))
    37.                         chinese_total += chinese
    38.                         english_total += english
    39.                         japanese_total += japanese
    40.     except Exception as e:
    41.         print(f"Error processing Excel file {file_path}: {e}")
    42.     return chinese_total, english_total, japanese_total

    43. # 处理 TXT 文件
    44. def process_txt(file_path):
    45.     chinese_total = english_total = japanese_total = 0
    46.     try:
    47.         with open(file_path, 'r', encoding='utf-8') as file:
    48.             content = file.read()
    49.             chinese, english, japanese = count_characters(content)
    50.             chinese_total += chinese
    51.             english_total += english
    52.             japanese_total += japanese
    53.     except Exception as e:
    54.         print(f"Error processing TXT file {file_path}: {e}")
    55.     return chinese_total, english_total, japanese_total

    56. # 遍历文件夹并统计字符数(包括递归子文件夹)
    57. def process_folder(folder_path):
    58.     total_chinese = total_english = total_japanese = 0

    59.     # 使用 os.walk 递归遍历所有子文件夹及文件
    60.     for root, _, files in os.walk(folder_path):
    61.         for file in files:
    62.             file_path = os.path.join(root, file)
    63.             # 只处理指定类型的文件
    64.             if file.endswith('.docx'):
    65.                 print(f"Processing Word file: {file_path}")
    66.                 chinese, english, japanese = process_word(file_path)
    67.                 total_chinese += chinese
    68.                 total_english += english
    69.                 total_japanese += japanese
    70.             elif file.endswith('.xlsx'):
    71.                 print(f"Processing Excel file: {file_path}")
    72.                 chinese, english, japanese = process_excel(file_path)
    73.                 total_chinese += chinese
    74.                 total_english += english
    75.                 total_japanese += japanese
    76.             elif file.endswith('.txt'):
    77.                 print(f"Processing TXT file: {file_path}")
    78.                 chinese, english, japanese = process_txt(file_path)
    79.                 total_chinese += chinese
    80.                 total_english += english
    81.                 total_japanese += japanese

    82.     # 输出统计结果
    83.     print("\nFinal Character Count:")
    84.     print(f"Total Chinese characters: {total_chinese}")
    85.     print(f"Total English characters: {total_english}")
    86.     print(f"Total Japanese characters: {total_japanese}")

    87. # 主函数入口
    88. if __name__ == "__main__":
    89.     folder_path = input("Enter the folder path: ")
    90.     folder_path = folder_path.strip()  # 去除输入路径中的多余空格
    91.     if not os.path.exists(folder_path):
    92.         print(f"Error: The folder path '{folder_path}' does not exist.")
    93.     else:
    94.         process_folder(folder_path)
    复制代码


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    评分

    参与人数 2血液 +3 追随 +2 堕落 +1 收起 理由
    咸鱼鱼 + 1
    星之子 + 3 + 1 + 1 (´▽`ʃ♡ƪ)~

    查看全部评分

    回复

    使用道具 举报

    永远的克叔寄宿法老王灵魂的容器极·龙の意官复原职实现梦想業火死鬥传奇虚空之海的鲸不朽之恋

      2297988 发表于 2024-10-2 16:35:46 | 显示全部楼层 <
      就跟word的字数统计一样
      回顾自己工作时看着一长串数字总有种大事得成的满足感XD
      辛苦大佬啦,贴贴
      回复

      使用道具 举报

      灵光补脑剂没有梦想的咸鱼收到情书雷夜嘯聲遭遇死神布衣暗红矿土不曾寄出的信件TRPG版塊

        艾维叶叶 发表于 2024-10-2 16:43:28 | 显示全部楼层 <
        回复

        使用道具 举报

        漂洋小船冒险用指南针破损的旧书人鱼之泪雪王的心脏苏格兰圆脸胖鸡[Pro Max]丛林的鸟飞走了不曾寄出的信件幽灵竹筒『随时随地开启!』

          凯诺斯 发表于 2024-10-2 16:55:55 | 显示全部楼层 <
          回复

          使用道具 举报

          弗雷迪玩偶发条八音盒桂花米糕鎏彩万幢女巫之路虚空之海的鲸【新春限定】果体 隆『召唤好运的角笛』永远的克叔業火死鬥

            娱乐法师火布偶 发表于 2024-10-2 17:05:46 | 显示全部楼层 <
            回复

            使用道具 举报

            森林鹿邦尼尼熔岩鹰不曾寄出的信件格拉迪欧拉斯小丑与格雷与星光璀璨御医神兔月光骑士最终幻想XVI

              随心110 发表于 2024-10-2 17:21:12 | 显示全部楼层 <
              回复

              使用道具 举报

              我的天使GM吸血伯爵吃饱金币的Doge苏格兰圆脸胖鸡小小舞台守卫: 坚守眼位永浴爱河肉垫手套御医神兔『搓粉团珠』

                毛茸茸兽兽 发表于 2024-10-2 17:43:22 | 显示全部楼层 <
                回复

                使用道具 举报

                敖蜃星神秘商店贵宾卡肉乖乖旧日支配者—克苏鲁業火死鬥魔法不朽·传奇不熄十年一梦炙热的格拉迪欧拉斯卡洛斯·奥利维拉男巫之歌

                  Burry 发表于 2024-10-2 18:03:58 | 显示全部楼层 <
                  回复

                  使用道具 举报

                  龙腾世纪:审判无瑕的回忆贝优妮塔星芒戒指日荒戒指月陨戒指剑指撒冷质量效应三部曲禽兽扒手『冰雕马拉橇』

                    饥渴难耐的G 发表于 2024-10-2 19:28:56 | 显示全部楼层 <
                    回复

                    使用道具 举报

                    牧羊人崩朽龙卵六出冰花『金色车票』螺旋纹卵滴血认亲『日心说』堕落之舞风雪之家

                      Hróðvitnir 发表于 2024-10-2 19:54:30 | 显示全部楼层 <
                      回复

                      使用道具 举报

                      20x43 隐形➀吃饱金币的Doge小小安全帽金牌矿工冒险用指南针小小舞台阿拉喵?神灯弗雷迪玩偶『梦旅存根』

                        不是卖萌的基佬 发表于 2024-10-2 20:04:25 | 显示全部楼层 <
                        回复

                        使用道具 举报

                        You Can Pet Blaidd『迷翳结晶:收集颗粒』铁牛妙手空空吃饱金币的Doge亚瑟‧摩根自由杰夫‧莫罗艾吉奥炽焰咆哮虎

                          提尔特 发表于 2024-10-2 20:04:53 | 显示全部楼层 <
                          回复

                          使用道具 举报

                          亚索月影狼晓月终焉旅行骰子!卡利亚权杖

                            黑达克 发表于 2024-10-2 22:48:32 | 显示全部楼层 <
                            回复

                            使用道具 举报

                            金钱马车『逆境中的幸运女神』裸体克里斯【圣诞限定】心心念念小雪人【夏日限定】夏日的泰凯斯永远的克叔史莱姆牧场虚空之海的鲸男巫之歌诺曼底号

                              前方无怪 发表于 2024-10-3 03:29:10 | 显示全部楼层 <
                              可以统计字数挺好的,有时候有些东西就按照文本量来计算,这样子方便很多哇!
                              回复

                              使用道具 举报

                              缘起星空虚空之海的鲸

                                you9632587 发表于 2024-10-3 07:21:22 | 显示全部楼层 <
                                回复

                                使用道具 举报

                                最终幻想XIV最终幻想XVI赛博朋克2077丹妮莉丝·坦格利安希尔瓦娜斯·风行者官复原职塞巴斯蒂安·斯坦杰森‧斯坦森荒野大镖客:救赎 II

                                  tuxonstar 发表于 2024-10-3 09:22:44 | 显示全部楼层 <
                                  回复

                                  使用道具 举报

                                  GM論壇榮譽勛章森林羊男发芽的种子夜灯幼年独角兽驯化红龙幼崽牧羊人寶可夢 Pokémon

                                    Blackless 发表于 2024-10-3 10:55:11 | 显示全部楼层 <
                                    回复

                                    使用道具 举报

                                    虚空之海的鲸史莱姆牧场千里潋滟双贤辉石头罩不洁圣子古老金币劫掠核芯森林鹿黄金树的恩惠丹雀衔五穗,人间始丰登

                                      1287549 发表于 2024-10-3 12:08:17 | 显示全部楼层 <
                                      回复

                                      使用道具 举报

                                        咸鱼鱼 发表于 2024-10-3 12:35:03 | 显示全部楼层 <
                                        回复

                                        使用道具 举报

                                        【圣诞限定】心心念念小雪人吃饱金币的Doge被释放的灵魂【新春限定】果体 隆業火死鬥男巫之歌虚空之海的鲸卡利亚权杖诺曼底号

                                          折木 发表于 2024-10-3 18:16:56 | 显示全部楼层 <
                                          回复

                                          使用道具 举报

                                          您需要登录后才可以回帖 登录 | 立即注册

                                          本版积分规则

                                          关闭

                                          站长公告上一条 /1 下一条

                                          文字版|手机版|小黑屋|GameMale

                                          GMT+8, 2025-12-8 14:47 , Processed in 0.137766 second(s), 143 queries , Redis On.

                                          Copyright © 2013-2025 GameMale

                                          All Rights Reserved.

                                          快速回复 返回列表