You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现GUI选择多Word文档统计字符数并存为变量

Word文档字符数统计实现方案

你最初编写的代码调用len(all_paras)仅返回文档的段落总数,没有读取段落内的实际文本内容,自然无法统计字符数。以下是两个需求的具体实现方式:

单个Word文档总字符数统计

如果仅需处理.docx格式文档,使用python-docx即可实现,注意统计时需要同时覆盖普通段落、表格内的文本,避免漏算内容。

  • 安装依赖:
pip install python-docx
  • 统计代码:
import docx

def count_docx_chars(file_path, count_space=True):
    """
    统计docx文档字符数
    :param file_path: 文档路径
    :param count_space: 是否统计空格、换行、制表符等空白字符
    """
    doc = docx.Document(file_path)
    total_text = ""
    # 拼接所有普通段落文本
    for para in doc.paragraphs:
        total_text += para.text
    # 拼接所有表格内的文本,避免漏算
    for table in doc.tables:
        for row in table.rows:
            for cell in row.cells:
                total_text += cell.text
    # 不需要统计空白字符时执行过滤
    if not count_space:
        total_text = total_text.replace(" ", "").replace("\t", "").replace("\n", "")
    return len(total_text)

# 调用示例
total_chars = count_docx_chars("example.docx")
print(total_chars)

如果需要兼容老版本.doc格式,可以替换为textract库实现,该库支持绝大多数文档格式的文本提取,仅需将统计逻辑替换为文本提取后计算长度即可。

批量统计+GUI多选+独立变量存储

使用Python自带的tkinter库实现文件多选对话框,无需额外安装GUI依赖,选中文件后按顺序将字符数赋值给a、b、c...的独立变量,满足后续直接调用变量的需求。
完整实现代码:

import tkinter as tk
from tkinter import filedialog
import docx

def count_docx_chars(file_path, count_space=True):
    doc = docx.Document(file_path)
    total_text = ""
    for para in doc.paragraphs:
        total_text += para.text
    for table in doc.tables:
        for row in table.rows:
            for cell in row.cells:
                total_text += cell.text
    if not count_space:
        total_text = total_text.replace(" ", "").replace("\t", "").replace("\n", "")
    return len(total_text)

# 初始化tkinter并隐藏主窗口
root = tk.Tk()
root.withdraw()

# 弹出多文件选择对话框,仅显示Word格式文件
selected_files = filedialog.askopenfilenames(
    title="选择需要统计的Word文档",
    filetypes=[("Word文档", "*.docx *.doc")]
)

# 按选中顺序为每个文档的字符数分配独立变量a/b/c...
for index, file_path in enumerate(selected_files):
    # 生成对应变量名:第1个文件对应a,第2个对应b,以此类推
    var_name = chr(ord('a') + index)
    # 统计当前文档字符数
    char_num = count_docx_chars(file_path)
    # 注册为全局变量,后续可直接调用
    globals()[var_name] = char_num

# 调用示例:选中4个文件时,直接执行print(a)可输出第1个文档字符数,print(d)输出第4个文档字符数
# print(a)
# print(d)

注意事项

  • 如果需要统计的文件数量超过26个,单字母变量名会出现冲突,可以将变量名生成规则修改为f"doc_{index+1}_chars",对应变量为doc_1_chars、doc_2_chars,按需调整即可
  • 如果需要兼容.doc格式,将代码中的count_docx_chars函数替换为textract版本的文本提取统计逻辑即可
  • 如果不需要统计空白字符,调用统计函数时传入count_space=False参数

内容的提问来源于stack exchange,提问作者Noob-Programmer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 02:42:44