GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 823|回复: 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 (´▽`ʃ♡ƪ)~

    查看全部评分

    回复

    使用道具 举报

    幸运女神的微笑丹雀衔五穗,人间始丰登刀锋女王 - 归宿瑞文戴尔普隆普特·阿金塔姆安杜因·乌瑞恩“腐败女神”玛莲妮亚王者之盾骑兽之子不朽之恋

      就跟word的字数统计一样
      回顾自己工作时看着一长串数字总有种大事得成的满足感XD
      辛苦大佬啦,贴贴
      回复

      使用道具 举报

      叶卡捷琳娜大帝恐懼氣味『逆境中的幸运女神』幸运女神的微笑

        回复

        使用道具 举报

        不曾寄出的信件小小舞台漂洋小船『随时随地开启!』冒险用指南针破损的旧书丛林的鸟飞走了雪王的心脏人鱼之泪幽灵竹筒

          回复

          使用道具 举报

          百相千面-晦永远的克叔業火死鬥实现梦想官复原职虚空之海的鲸Zootopia幸运女神的微笑『逆境中的幸运女神』御医神兔

            回复

            使用道具 举报

            一只小鹿金牌矿工熔岩鹰不曾寄出的信件格拉迪欧拉斯诺克提斯·路西斯·伽拉姆御医神兔月光骑士

              回复

              使用道具 举报

              我的天使GM吸血伯爵吃饱金币的Doge阿拉喵?神灯和你一起飞行的皮卡丘小小舞台永浴爱河

                回复

                使用道具 举报

                实现梦想業火死鬥魔法不朽·传奇不熄卡洛斯·奥利维拉白野威十年一梦官复原职男巫之歌永浴爱河虚空之海的鲸

                  回复

                  使用道具 举报

                  『逆境中的幸运女神』魔眼护符骑兽之子召唤古代战士近地夜航元气菠菜人烈焰天使弓龙血指环『灰域来音』

                    回复

                    使用道具 举报

                    牧羊人崩朽龙卵波纹蓝蛋六出冰花『金色车票』螺旋纹卵血鹫蛋『日心说』堕落之舞

                      回复

                      使用道具 举报

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

                        回复

                        使用道具 举报

                        泰比里厄斯肥皂铁牛吃饱金币的Doge亚瑟‧摩根自由克里斯·埃文斯艾吉奥

                          回复

                          使用道具 举报

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

                            回复

                            使用道具 举报

                            幸运女神的微笑『逆境中的幸运女神』秘密空瓶阿怪GHOST裸体克里斯【圣诞限定】心心念念小雪人【夏日限定】夏日的泰凯斯史莱姆牧场不朽之恋

                              可以统计字数挺好的,有时候有些东西就按照文本量来计算,这样子方便很多哇!
                              回复

                              使用道具 举报

                              缘起星空创生之柱虚空之海的鲸

                                回复

                                使用道具 举报

                                灵光补脑剂最终幻想XIV近地夜航五花八门版块最终幻想XVI瑞雪兆丰年,生灵万物新森林羊男

                                  回复

                                  使用道具 举报

                                  GM論壇勛章【新手友好】昆進驯化红龙幼崽

                                    回复

                                    使用道具 举报

                                    Act of Ultimate Trust最终幻想XVI罗宾·西克劫掠核芯不洁圣子古老金币日荒戒指森林鹿黄金树的恩惠

                                      回复

                                      使用道具 举报

                                      苍穹禁城『逆境中的幸运女神』最终幻想XIV琉璃玉坠魔法石碑远古石碑森林鹿夏日柯基苏醒的格罗姆

                                        回复

                                        使用道具 举报

                                        火柴 - Gamemale萨菲罗斯炽天使之拥亚索诺克提斯·路西斯·伽拉姆超人官复原职業火死鬥猎户座的明珠

                                          回复

                                          使用道具 举报

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

                                          本版积分规则

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

                                          GMT+8, 2024-10-23 02:39 , Processed in 0.119903 second(s), 144 queries , Redis On.

                                          Copyright © 2013-2024 GameMale

                                          All Rights Reserved.

                                          快速回复 返回列表