GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

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

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

[复制链接] |关注本帖

【夏日限定】夏日的泰凯斯業火死鬥史莱姆牧场SCP-s-1889-第五页不朽之恋虚空之海的鲸吃饱金币的Doge可爱黑猫丹雀衔五穗,人间始丰登近地夜航

     楼主| 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 (´▽`ʃ♡ƪ)~

    查看全部评分

    回复

    使用道具 举报

    炽天使之拥GHOST幸运女神的微笑官复原职丹妮莉丝·坦格利安普隆普特·阿金塔姆王者之盾骑兽之子不朽之恋赛博朋克2077

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

      使用道具 举报

      葛莱分多章鱼小丸子白猪猪储蓄罐㊖『逆境中的幸运女神』幸运女神的微笑幸福的小阿尔香喷喷的烤鸡

        回复

        使用道具 举报

        金猪猪储蓄罐㊖小小舞台漂洋小船『随时随地开启!』冒险用指南针破损的旧书丛林的鸟飞走了雪王的心脏人鱼之泪幽灵竹筒

          回复

          使用道具 举报

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

            回复

            使用道具 举报

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

              回复

              使用道具 举报

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

                回复

                使用道具 举报

                金猪猪储蓄罐㊖实现梦想業火死鬥魔法不朽·传奇不熄卡洛斯·奥利维拉白野威十年一梦官复原职男巫之歌永浴爱河

                  回复

                  使用道具 举报

                  金猪猪储蓄罐㊖炼金之心魔眼护符骑兽之子召唤古代战士近地夜航元气菠菜人烈焰天使弓龙血指环『灰域来音』

                    回复

                    使用道具 举报

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

                      回复

                      使用道具 举报

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

                        回复

                        使用道具 举报

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

                          回复

                          使用道具 举报

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

                            回复

                            使用道具 举报

                            阿怪GHOST吃饱金币的Doge秘密空瓶裸体克里斯【圣诞限定】心心念念小雪人【夏日限定】夏日的泰凯斯史莱姆牧场虚空之海的鲸不朽之恋

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

                              使用道具 举报

                              缘起星空虚空之海的鲸

                                回复

                                使用道具 举报

                                赛博朋克2077最终幻想XIV最终幻想XVI近地夜航瑞雪兆丰年,生灵万物新丹妮莉丝·坦格利安官复原职重生之境

                                  回复

                                  使用道具 举报

                                  GM論壇勛章夜灯寶可夢 Pokémon幼年独角兽枕套幽灵瑞雪兆丰年,生灵万物新

                                    回复

                                    使用道具 举报

                                    虚空之海的鲸BIG BOSS千里潋滟炽天使之拥不洁圣子古老金币日荒戒指森林鹿黄金树的恩惠

                                      回复

                                      使用道具 举报

                                      『逆境中的幸运女神』苍穹禁城最终幻想XIV狩猎用小刀炽天使之拥SCP-s-1889-第七页GHOST森林鹿夏日柯基

                                        回复

                                        使用道具 举报

                                        火柴 - Gamemale萨菲罗斯炽天使之拥亚索诺克提斯·路西斯·伽拉姆官复原职業火死鬥璀璨之焰虚空之海的鲸

                                          回复

                                          使用道具 举报

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

                                          本版积分规则

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

                                          GMT+8, 2024-11-15 10:11 , Processed in 0.195857 second(s), 147 queries , Redis On.

                                          Copyright © 2013-2024 GameMale

                                          All Rights Reserved.

                                          快速回复 返回列表