GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

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

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

[复制链接] |关注本帖

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

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

    查看全部评分

    回复

    使用道具 举报

    SCP-s-1889-第二页炽天使之拥幸运女神的微笑朴素的誓言官复原职丹妮莉丝·坦格利安普隆普特·阿金塔姆克莱夫・罗兹菲尔德骑兽之子不朽之恋

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

      使用道具 举报

      朴素的誓言无瑕的回忆遗忘之水布衣章鱼小丸子『逆境中的幸运女神』幸运女神的微笑香喷喷的烤鸡

        回复

        使用道具 举报

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

          回复

          使用道具 举报

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

            回复

            使用道具 举报

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

              回复

              使用道具 举报

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

                回复

                使用道具 举报

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

                  回复

                  使用道具 举报

                  『住在GM村』珊瑚泡泡鱼不曾寄出的信件小小安全帽魔眼护符骑兽之子近地夜航元气菠菜人烈焰天使弓龙血指环

                    回复

                    使用道具 举报

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

                      回复

                      使用道具 举报

                      没有梦想的咸鱼20x43 隐形➀吃饱金币的Doge冒险用指南针金牌矿工小小安全帽小小舞台阿拉喵?神灯图腾饼干『梦旅存根』

                        回复

                        使用道具 举报

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

                          回复

                          使用道具 举报

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

                            回复

                            使用道具 举报

                            咆哮诅咒敖蜃星黑暗交易阿怪GHOST吃饱金币的Doge秘密空瓶裸体克里斯【圣诞限定】心心念念小雪人【夏日限定】夏日的泰凯斯

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

                              使用道具 举报

                              缘起星空虚空之海的鲸

                                回复

                                使用道具 举报

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

                                  回复

                                  使用道具 举报

                                  GM論壇勛章夜灯幼年独角兽枕套幽灵驯化红龙幼崽牧羊人

                                    回复

                                    使用道具 举报

                                    虚空之海的鲸BIG BOSS千里潋滟双贤辉石头罩不洁圣子古老金币日荒戒指森林鹿黄金树的恩惠

                                      回复

                                      使用道具 举报

                                      最终幻想XIV『逆境中的幸运女神』苍穹禁城琉璃玉坠黄金树的恩惠炽天使之拥森林鹿夏日柯基苏醒的格罗姆

                                        回复

                                        使用道具 举报

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

                                          回复

                                          使用道具 举报

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

                                          本版积分规则

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

                                          GMT+8, 2024-12-22 09:11 , Processed in 0.151701 second(s), 144 queries , Redis On.

                                          Copyright © 2013-2024 GameMale

                                          All Rights Reserved.

                                          快速回复 返回列表