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

Python如何统计多.docx文件词数并存入列表生成翻译自动化发票

翻译发票自动化docx词数统计问题修复

问题原因

你之前赋值只能拿到最后一个文件的词数,核心原因是没有在文件遍历循环内,把每次计算出的当前文件词数追加到list_words列表中,若在循环外给变量赋值,只会保留最后一次循环的计算结果。

原统计行逻辑拆解

len(re.findall(r'\w+', '\n'.join(newparatextlist)))的执行逻辑分3步:

  • '\n'.join(newparatextlist):将遍历得到的当前文档所有段落文本,用换行符拼接为完整的单条字符串,消除段落拆分存储的影响
  • re.findall(r'\w+', 完整文本字符串):通过正则规则匹配所有连续的字符(字母、数字、下划线,符合常规英文单词的判定特征),返回包含所有匹配到单词的列表
  • len(匹配结果列表):统计匹配列表的元素总数,得到的值就是当前文档的总词数

修正后可直接运行的代码

修正后代码会自动过滤非docx文件,生成的list_files和list_words索引一一对应,可直接用于后续写入Excel生成发票:

import os
import re
from docx import Document

# 指定待统计文件的文件夹路径
folder = r'D:/Tulk_1'
files = os.listdir(folder)

list_files = []
list_words = []

for file in files:
    # 跳过非docx格式文件,避免读取报错
    if not file.endswith('.docx'):
        continue
    # 拼接文件绝对路径,跨系统兼容
    location = os.path.join(folder, file)
    list_files.append(file)
    
    # 读取文档收集所有段落文本
    document = Document(location)
    paragraph_texts = [para.text for para in document.paragraphs]
    full_text = '\n'.join(paragraph_texts)
    
    # 计算词数并存入列表
    current_word_count = len(re.findall(r'\w+', full_text))
    list_words.append(current_word_count)
    
    # 打印单文件统计结果做校验
    print(f"文件:{file} | 词数:{current_word_count}")

# 校验最终列表输出
print("文件名列表:", list_files)
print("对应词数列表:", list_words)

运行后list_words会输出你预期的[2950, 1068, 946, 788],和list_files顺序完全对应。

适配提示

如果你的待统计文件包含大量带连字符的专业术语、中文内容,可以将正则匹配规则替换为r'[\u4e00-\u9fa5]|\b[\w-]+\b',同时兼容中文字符和带连字符的单词统计,结果更准确。

内容的提问来源于stack exchange,提问作者Zixxy7

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:51:22