使用多个关键字对word进行批量查找统计

#coding: UTF-8
import jieba
import os
from docx import Document
import tkinter as tk
from tkinter import filedialog
# 创建关键词列表
from lxml.doctestcompare import strip


root = tk.Tk()
root.withdraw()

#获取文件路径
file_path = filedialog.askopenfilename(title=u"选择要查找关键词所在txt",filetypes = (("Txt files","*.txt"),("all files","*.*")))

keywords = []
jieba.load_userdict(file_path)  # 增加自定义词库
key_open = open(file_path, 'r', encoding='utf-8')
for words in key_open:
    keywords.append(words.strip())
key_open.close()

print(keywords)

word_dict2 = {}
word_lst = []


def word_list(word_dict, word_lst):
    # 统计词
    for item in word_lst:
        if item not in word_dict:
            word_dict[item] = 1
        else:
            word_dict[item] += 1
    return word_dict
def get_paragraphs_text(path):
    """
    获取所有段落的文本
    :param path: word路径
    :return: list类型,如:
        ['Test', 'hello world', ...]
    """
    document = Document(path)
    all_paragraphs = document.paragraphs
    paragraphs_text = []
    for paragraph in all_paragraphs:
        paragraphs_text.append(paragraph.text)
    return paragraphs_text

def get_all_tables_text(path):
    """
    获取word中所有表格的文本
    :param path: word路径
    :return: list类型的二维数组
        如:[['年龄', '排序'], ['23', '00',], ...]
    """
    document = Document(path)
    all_tables = document.tables
    text_list = []
    for table in all_tables:
        for row in table.rows:
            text = []
            for cell in row.cells:
                text.append(cell.text)
            text_list.append(text)
    return text_list

dir_path=filedialog.askdirectory(title=u"选择被查找对象文件夹")
file_path = filedialog.asksaveasfilename( defaultextension=".txt", title=u"保存查找结果",
                                       filetypes=(("Txt Files", "*.txt"), ("All Files", "*.*")))
with open(file_path, 'w') as wf1:
    for info in os.listdir(dir_path):  # 'H:\nnword' 是docx文档的地址
        domain = os.path.abspath(dir_path)
        print('《' + info + '》')  # 打印出docx的文件名
        print('------------------------------')
        info1 = os.path.join(domain, info)  # 拼接路径
        document = Document(info1)
        word_lst1 = []
        word_dict1 = {}
        # 打开 docx 文件
        for paragraph in document.paragraphs:  # 遍历每一个docx文档
            tags = jieba.cut(paragraph.text)
            for t in tags:
                if len(t) >1:
                    word_lst.append(t)
                    word_lst1.append(t)
        # 统计每篇文章的输出结果,并排序
        for table in document.tables:
            for row in table.rows:
                for cell in row.cells:
                    tags = jieba.cut(cell.text)
                    for t in tags:
                        if len(t) > 1:
                            word_lst.append(t)
                            word_lst1.append(t)
        word_list(word_dict1, word_lst1)
        word_sort1 = sorted(word_dict1.items(), key=lambda x: x[1], reverse=True)
        wf1.write(str('*' * 5) + info + str('*' * 5) + '\n')  # 打印题目
        # 将每篇文章的 统计结果输出到文本
        for i in range(len(word_sort1)):
            if word_sort1[i][0] in keywords:
                wf1.write(str(word_sort1[i][0] + '\t\t' + str(word_sort1[i][1]) + '\n'))
# 总的统计结果,
word_list(word_dict2, word_lst)
word_sort = sorted(word_dict2.items(), key=lambda x: x[1], reverse=True)

# with open("H:/out2.txt", 'w') as wf2, open("H:/out3.txt", "w") as wf3:
#     for i in range(len(word_sort)):
#         # 总的分词结果
#         wf2.write(str(word_sort[i][0]) + '\t\t' + str(word_sort[i][1]) + '\n')
#         if word_sort[i][0] in keywords:
#             # 符合关键词的
#             wf3.write("{0:15}\t{1:10}".format(str(word_sort[i][0]), str(word_sort[i][1]), chr(12288)) + '\n')
# wf2.close()
# wf3.close()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Word精灵2.0包含49个工具,用于强化WORD的功能。 它支持32位和64位的Word,支持Word 2007、2010、2013和2016,不支持WORD 2003。 导出所有批注 批量导出当前文档中的所有批注到Excel工作表中。 表格最佳宽度 让当前文档中的所有表格自动调整为最佳宽度。 导出表格到Excel单表 将当前文档中的所有表格导出到Excel工作表中,有多个表格时会按先后顺序在同一个工作表中逐一罗列出来。 导出表格到Excel多表 导出表格时将每一个WORD表格保存在单独的工作表中,即WORD中有多少个表格,则在Excel中生成多少个工作表,逐一存放,同时还生成工作表目录。 批量缩放图片 按指定的倍数批量放大图片,或者按指定的百分比批量缩小图片。 统一图片尺寸 将指定路径中的所有图片统一分辨率。 转换图片格式 将指定路径中的所有图片统一转换成相同的格式。 批量插入图片 批量插入图片到当前文档中,可以选择图片名称的显示方式,以及定义图片的高度。 批量导出图片 将当前文档中的所有图片导出到指定的路径下,保存为JPG格式的图片文件。 所有数值 用红色标示出全文档中的所有数值。 大于参考值 用红色标示出全文档中的大于某个值的数值。 小于参考值 用红色标示出全文档中小于某个值的数值。 带后缀的值 用红色标示具有某个后缀的数值。例如后缀设定为"元",那么只标示"元"结尾的数值。 带前缀的值 用红色标示具有某个前缀的数值。例如前缀设定为"借",那么只标示左边字符为"借"的数值。 大于&后缀 用红色标示具有指定后缀且大于某个参照值的数值。例如大于"100元",大于"59.9分"等等。 小于&后缀 用红色标示具有指定后缀且小于某个参照值的数值。例如小于"100元",小于"60分"等等。 大于&前缀 用红色标示具有指定前缀且大于某个参照值的数值。例如大于"借款100",大于"出货量4800"等等。 小于&前缀 用红色标示具有指定前缀且小于某个参照值的数值。例如小于"借款100",小于"出货量5000"等等。 清除空白行 批量删除所有空白的行。包含两种情况下,其一是一行中只有一个换行符;其二是一行中除了换行符只有空格。这两种情况都可以一键删除。 清除行首空格 清除选区中每一个段落的前置空格。例如有些人喜欢用空格来实现首行缩进,时可以清除前置的空格,然后再执行工具"段落缩进"。 清除行尾空格 清除一个段落中最末尾的空格,即位于换行符前面的空格。 清除超级链接 清除文档中的所有超链接。 清除文本框 清除文档中所有文本框(矩形也算)。 清除所有图片 清除文档内的所有图片。 按页拆分文档 将WORD文件的每一页替换成一个文档,适用于每页之间不存在关联、可以独立成文的文档。例如调查表,文档的每一页有一个表格,拆分后每一个文档都拥有完整独立的内容。 按一级标题拆分 将当前文档按一级标题拆分成多个文档(一级文档必须使用"样式1")。 合并文档 将选中的多个文档内容合并到一个新文档中。 批量替换 对当前文档的内容、页眉、页脚执行批量替换,例如将1替换成A,将2替换成B,将3替换成C...... 多文档批量替换 对多个WORD文档执行替换,包含正文、页眉和页脚。同时还支持多个关键字替换,例如将1替换成A,将2替换成B,将3替换成C...... 段落缩进 让指定的段落首行缩进俩字符。 中英互译 对选区的字符执行中译英、英译中操作...... 插入编号 插入编号,包含5种样式。 二维码 将选区中的字符生成二难码。 查日历 查询公历和农历日期。 转换式 批量转换文档格式。 提取XX前的值 根据指定的位置提取其前方的数值,并保存在剪贴板中,您可以将它复制WORD中或者Excel中去。 提取XX后的值 根据指定的位置提取其右方的数值,并保存在剪贴板中,您可以将它复制WORD中或者Excel中去。 金额大写 将小写的数值金额转换成人民币大写状态。在表格中时支持批量转换。 小数转百分比 将带有小数的值转换成百分比形式,支持批量转换。 计算表达式 将表达式转换成计算结果,支持批量转换。 千分位分隔符 对整数大于3位的数值批量添加千分位分隔符。段落中的值一次只能转一个数值,表格中的值则可以批量转换。 标点统一全角半角 对选区或者全文统一标点符合的全角与半角状态。 快捷设置 快捷设置自动编号、禁止Internet及网络路径替换为超链接、禁止插入自动创建绘图画布和切换输入模式。 批量命名文件 对指定路径下的指定类型的文件批量命名,包含在原文件名称的前面插入字符/在后面插入字符,或者替换部分字符,删除部分字符等命名方式。 缩放文档内的图片 将当前文档中插入的图片按指定的百分比缩小或者放大,以及还原到原图大小。 解除限制编辑 解除WORD自带的“限制编辑”功能。 快捷搜索与删除 搜索指定的目标,每点一次搜索下一个,也可以删除所有找到的目标。 段落加密 对选定的段落加密保护,使其显示为乱码。必须知道8位密码才能还原为原来的字符。 定位重复字 定位文档中的所有重复字词,包含“AA”、“AAA”和“ABAB”三种形式。重复字词有可能是手误产生的,也可能是正常的重复,本工具仅仅定位目标,是否属于错误由用户自行判断,如果错误则可以马上纠错,如果正确则继续查找其他重复目标。本工具对于长文档纠错提供了便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值