文档查找器

发布时间:2023年12月25日

前言

在众多考试准备过程中,我们经常会接触到由机构提供的题库,用于自学和复习。然而,这些题库往往庞大而繁杂,完全记住它们几乎是不可能的任务,尤其是在面临机考时,题目的随机性更增加了复习的难度。为了解决这个问题,我编写了一个程序来帮助整理和搜索这些题目。在此声明,此工具仅供学习使用,请勿用于不当目的。

技术栈

  • 语言:Python
  • 依赖库:请参考源代码中的库引用。

数据获取

我们已经提前获取了相关的文档,因此可以跳过数据获取的步骤。

数据处理

数据处理是这个工具的核心部分。在此项目中,我们的目标是快速而准确地检索问题和对应答案。为此,我们创建了一个字典结构 questions_answers,其中问题作为键,答案作为值。通过这种方式,我们可以通过输入问题来迅速找到对应的答案。

以下是数据处理的核心代码:

from docx import Document
import json
def extract_questions_answers(doc_path):
    doc = Document(doc_path)
    questions_answers = {}
    current_question = None
    current_answer = ""

    for para in doc.paragraphs:
        text = para.text.strip()
        if text.startswith(tuple(str(i) + "." for i in range(1, 100))):  # 识别问题
            if current_question:
                questions_answers[current_question] = current_answer.strip()
            current_question = text
            current_answer = ""
        elif text.startswith("答案:"):  # 识别答案
            current_answer += text + "\n"

    if current_question:
        questions_answers[current_question] = current_answer.strip()

    return questions_answers

这段代码首先识别文档中的问题和答案,然后将其保存在一个字典中,以便后续快速检索。

编写查找应用

为了方便地搜索题库,我使用了Tkinter库来创建一个简单的图形界面应用程序。用户可以在输入框中输入问题的关键词,程序将返回匹配的答案。

import tkinter as tk
from tkinter import messagebox
import json
import sys
import os

# 确定应用的路径
if getattr(sys, 'frozen', False):
    application_path = os.path.dirname(sys.executable)
else:
    application_path = os.path.dirname(os.path.abspath(__file__))
json_path = os.path.join(application_path, 'questions_and_answers.json')

# 从JSON文件加载问题和答案
with open(json_path, "r", encoding="utf-8") as f:
    content = json.load(f)

def search_text():
    search_query = entry.get().lower()
    for question, answer in content.items():
        if search_query in question.lower():
            messagebox.showinfo("y", answer)
            return
    messagebox.showinfo("n", "n")

# 创建主窗口
root = tk.Tk()
root.title("fata_error")

# 输入框
entry = tk.Entry(root, width=100)
entry.pack()

# 搜索按钮
search_button = tk.Button(root, text="do", command=search_text)
search_button.pack()

# 主循环
root.mainloop()

这个程序直观且易于使用,即使是对编程不太了解的用户也能轻松上手。

打包

为了使程序更加易于分发和使用,我使用了PyInstaller来将Python脚本打包成单个可执行文件。这样,用户无需担心环境配置的问题,只需运行.exe文件即可。

pip install pyinstaller
#可以在terminal中下载,也可以在cmd中下载

pyinstaller --onefile --add-data "questions_and_answers.json;." search.py

通过这种方式,我们可以将程序打包并分发给需要的用户,为他们的学习提供便利。

这里的–add-data选项用于包含非代码文件。在Windows中,使用分号;作为路径分隔符,在Linux或macOS中,您应该使用冒号:。

获取可执行文件:PyInstaller将在dist目录下创建search.exe。您可以将这个.exe文件和.json文件一起分发给用户。
运行的时候建议在cmd中运行,在外面运行失败会闪退,cmd中运行失败会有报错,我们要根据报错,找到问题

文章来源:https://blog.csdn.net/weixin_53285092/article/details/135196756
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。