如何通过win32com统计Word文档字数?附相关代码片段
如何用Python统计Word文档的字数?
嘿,我来帮你搞定这个Word字数统计的问题!你的代码目前是新建了一个Word文档并插入了一段文本,要实现统计已有Word文档字数的需求,我们可以对代码做一些调整,同时Word的COM对象本身就提供了现成的统计方法,非常方便。
核心思路
Word的COM接口里有两种常用的字数统计方式:
- 直接用
Words.Count属性:快速获取文档中的单词(含标点)数量 - 用
ComputeStatistics方法:和Word界面中「字数统计」功能的结果完全一致,更精准
修改后的完整代码(打开已有文档统计)
import win32com.client as win32 from time import sleep # 初始化Word应用 word = win32.gencache.EnsureDispatch('Word.Application') word.Visible = True # 可以设为False后台运行,这里设True方便你查看 sleep(1) # 打开已有的Word文档,替换成你的实际文档路径(注意路径写法:用原始字符串r""或者转义\\) doc = word.Documents.Open(r"C:\Users\YourName\Documents\your_file.docx") # 方式1:快速统计(包含标点符号) word_count_quick = doc.Words.Count print(f"快速统计字数(含标点):{word_count_quick}") # 方式2:精准统计(和Word界面的字数统计一致) word_count_precise = doc.ComputeStatistics(win32.constants.wdStatisticWords) print(f"精准统计字数:{word_count_precise}") # 记得关闭文档和Word进程(可选,避免后台残留) doc.Close(SaveChanges=False) # 不需要保存就设为False word.Quit()
如果是统计你代码中插入的文本字数
如果只是想统计你当前代码里插入的那段文本的字数,只需要在InsertAfter之后加上统计代码就行:
import win32com.client as win32 from time import sleep word = win32.gencache.EnsureDispatch('Word.Application') doc = word.Documents.Add() word.Visible = True sleep(1) rng = doc.Range(0,0) rng.InsertAfter('Can you tell me how many words are there in this sentence?') # 统计这段文本的字数 count = doc.ComputeStatistics(win32.constants.wdStatisticWords) print(f"这段文本的字数是:{count}") # 输出应该是13
注意事项
- 路径一定要写对:Windows路径里的斜杠要用
\\或者用原始字符串r"路径" - 如果不需要看到Word窗口,可以把
word.Visible = True改成False,后台运行更高效 - 用完记得调用
doc.Close()和word.Quit(),避免Word进程在后台残留占用资源
内容的提问来源于stack exchange,提问作者Chan




