当前位置: 首页 > wzjs >正文

网站违规词处罚做网站的站长之家站长工具

网站违规词处罚做网站的,站长之家站长工具,wordpress安装使用视频教程,网站排名优化的技巧我一直在探索如何让Python快速地检索数据,除了把数据装在py文件里,一起打包之外,我还尝试过把数据放到json文件里或CSV文件里,这样就可以快速地检索到我们想要的数据。考虑到检索数据库sql格式的文件,我还没有做过&…

我一直在探索如何让Python快速地检索数据,除了把数据装在py文件里,一起打包之外,我还尝试过把数据放到json文件里或CSV文件里,这样就可以快速地检索到我们想要的数据。考虑到检索数据库sql格式的文件,我还没有做过,今天就请出DeepSeek,让它来帮我把我的数据转化为一个sql文件,然后用python生成一个tkinter框架的UI界面,结果发现查询速度飞快。以下的工具的截图。

一、功能介绍

这个工具,可以快速地读取指定的sql格式文件,找到单词的多个变形,或者输入变形来查找它的原形。其主要特别是检索速度快,图形界面,多个检索模式。采用数据库来存储文件。

二、制作过程

1. 收集数据,明确任务

找到en_lemma.py格式的文件,把里面存储的数据写入到xlsx当中。文件内容如下:

en_lemma.py内容

我请DeepSeek为我生成了一段代码如下:

from openpyxl import Workbook
from en_lemma import lemmas  # 导入字典数据# 创建新工作簿并获取活动工作表
wb = Workbook()
ws = wb.active # 遍历字典的键值对
for key, values in lemmas.items(): # 构造行数据:键作为第一列,后面接列表元素row_data = [key] + values# 将数据写入工作表ws.append(row_data) # 保存Excel文件
wb.save("lemmas_data.xlsx") 

2. 修改xlsx文件,生成sql数据库

我们利用Python中的pandas包和sqlite3包把这个lemmas_data.xlsx转化为sql数据库,代码如下:

import pandas as pd
import sqlite3# 1. 读取 Excel 文件
excel_file = "en_lemmas.xlsx"  # Excel 文件路径
sheet_name = "Sheet1"  # Excel 工作表名称
df = pd.read_excel(excel_file, sheet_name=sheet_name)# 2. 创建 SQLite 数据库
sqlite_db = "verb_forms.db"  # SQLite 数据库文件路径
conn = sqlite3.connect(sqlite_db)
cursor = conn.cursor()# 3. 创建表
create_table_query = """
CREATE TABLE IF NOT EXISTS verb_forms (id INTEGER PRIMARY KEY AUTOINCREMENT,base_form TEXT NOT NULL,variant TEXT NOT NULL
);
"""
cursor.execute(create_table_query)# 4. 将数据插入 SQLite 表
for index, row in df.iterrows():base_form = row["BaseForm"]  # 假设 A 列是 BaseForm# 遍历 B、C、D 列(Variant1, Variant2, Variant3)for col in ["Variant1", "Variant2", "Variant3", "Variant4", "Variant5", "Variant6"]:variant = row[col]# 检查是否为有效值(非空)if pd.notna(variant) and variant.strip() != "":# 使用参数化查询避免 SQL 注入和特殊字符问题insert_query = """INSERT INTO verb_forms (base_form, variant)VALUES (?, ?);"""cursor.execute(insert_query, (base_form, variant.strip()))# 5. 提交更改并关闭连接
conn.commit()
conn.close()print(f"数据已成功导入 SQLite 数据库: {sqlite_db}")

代码使用前,要把lemmas_data.xlsx文件打开,在首行插入一行,为每一列增加标题。第一列为BaseForm,第二列为Variant1,第二列为Variant2,依次类推。然后再改名为en_lemmas.xlsx后,再运行上述代码。

en_lemmas.xlsx文件内容

3. 使用Tkinter,编写检索界面

采用DeepSeek编写一个UI界面的检索软件,可视化呈现检索结果。编写前先在非可视化界面下测试软件,于时我们得到一个简单的检索代码:

import sqlite3def get_base_form(word_to_find: str) -> str:try:# 连接数据库(自动处理相对路径)with sqlite3.connect("verb_forms.db")  as conn:cursor = conn.cursor() # 参数化查询防止 SQL 注入 cursor.execute( "SELECT base_form FROM verb_forms WHERE variant = ?",(word_to_find,))result = cursor.fetchone() return result[0] if result else ""  # 关键修复:去掉括号 except sqlite3.Error as e:print(f"数据库错误:{e}")return ""# 测试代码 
if __name__ == "__main__":test_word = "thought"base_form = get_base_form(test_word)if base_form:print(f"单词 '{test_word}' 的基本形式是:{base_form}")else:print(f"未找到 '{test_word}' 的基本形式")

然后,根据这个检索代码,进一步扩展,添加UI界面,最终得到以下代码:

import sqlite3
import tkinter as tk
from tkinter import ttk
from tkinter import messageboxdef get_base_form(word_to_find: str) -> str:try:# 连接数据库(自动处理相对路径)with sqlite3.connect("verb_forms.db")  as conn:cursor = conn.cursor() # 参数化查询防止 SQL 注入cursor.execute( "SELECT base_form FROM verb_forms WHERE variant = ?",(word_to_find,))result = cursor.fetchone() return result[0] if result else ""except sqlite3.Error as e:messagebox.showerror("  数据库错误", f"数据库错误:{e}")return ""def get_variants(word_to_find: str) -> list:try:with sqlite3.connect("verb_forms.db")  as conn:cursor = conn.cursor() # 先验证输入的是否为有效原形cursor.execute("SELECT  base_form FROM verb_forms WHERE base_form = ?", (word_to_find,))if not cursor.fetchone(): return []  # 不是有效原形则直接返回空# 查询变形cursor.execute("SELECT  variant FROM verb_forms WHERE base_form = ?", (word_to_find,))return [row[0] for row in cursor.fetchall()] except sqlite3.Error as e:messagebox.showerror("  数据库错误", f"数据库错误:{e}")return []def query():word = entry.get() if choice.get()  == 1:base_form = get_base_form(word)if base_form:result_text.delete(1.0,  tk.END)result_text.insert(tk.END,  f"单词【{word}】的基本形式是:{base_form}")else:result_text.delete(1.0,  tk.END)result_text.insert(tk.END,  f"未找到【{word}】的基本形式")elif choice.get()  == 2:variants = get_variants(word)result_text.delete(1.0,  tk.END)if variants:# 显示变形列表result_text.insert(tk.END,  f"原形【{word}】的变形:\n" + ", ".join(variants))else:# 分情况提示try:with sqlite3.connect("verb_forms.db")  as conn:cursor = conn.cursor() cursor.execute("SELECT  base_form FROM verb_forms WHERE variant = ?", (word,))if cursor.fetchone(): result_text.insert(tk.END,  f"注意:您输入的是变形单词,请切换至「原形」模式查询")else:result_text.insert(tk.END,  f"数据库未收录【{word}】的相关变形")except sqlite3.Error as e:messagebox.showerror("  数据库错误", f"数据库错误:{e}")def copy_text():result_text.clipboard_clear() result_text.clipboard_append(result_text.selection_get()) def cut_text():copy_text()result_text.delete(tk.SEL_FIRST,  tk.SEL_LAST)def paste_text():result_text.insert(tk.INSERT,  result_text.clipboard_get())def entry_copy():try:# 获取 Entry 选中内容并复制 entry.clipboard_clear() entry.clipboard_append(entry.selection_get()) except tk.TclError:pass  # 无选中内容时不操作 def entry_cut():entry_copy()  # 先复制 try:entry.delete(tk.SEL_FIRST,  tk.SEL_LAST)  # 再删除选中内容 except tk.TclError:pass def entry_paste():entry.insert(tk.INSERT,  entry.clipboard_get())   # 插入剪贴板内容 # 创建主窗口
root = tk.Tk()
root.title("  单词查询")
# 设置所有标准控件的默认字体
root.option_add("*Font",  ("Times New Roman", 14))  # 影响 Entry、Button 等非 ttk 控件# 设置 ttk 控件的主题字体
style = ttk.Style()
style.configure(".",  font=("Times New Roman", 14))  # 通配符 . 表示所有 ttk 控件# 创建输入框、单选按钮和查询按钮
frame_top = ttk.Frame(root)
frame_top.pack(pady=10) entry = ttk.Entry(frame_top, width=20)
entry.pack(side=tk.LEFT,  padx=5)
entry.bind("<Return>",  lambda event: query())  # 按回车触发查询
entry.focus_set()# 创建 Entry 的右键菜单 
entry_menu = tk.Menu(entry, tearoff=0)
entry_menu.add_command(label="  剪切", command=entry_cut)
entry_menu.add_command(label="  复制", command=entry_copy)
entry_menu.add_command(label="  粘贴", command=entry_paste)def show_entry_menu(event):entry_menu.post(event.x_root,  event.y_root)  # 显示菜单 entry.bind("<Button-3>",  show_entry_menu)  # 绑定右键事件 choice = tk.IntVar()
choice.set(2) 
radio1 = ttk.Radiobutton(frame_top, text="原形", variable=choice, value=1)
radio1.pack(side=tk.LEFT,  padx=5)radio2 = ttk.Radiobutton(frame_top, text="变形", variable=choice, value=2)
radio2.pack(side=tk.LEFT,  padx=5)query_button = ttk.Button(frame_top, text="查询", command=query)
query_button.pack(side=tk.LEFT,  padx=5)# 创建结果显示文本框
result_text = tk.Text(root, height=10, width=60)
result_text.pack(pady=10) # 创建右键菜单
menu = tk.Menu(result_text, tearoff=0)
menu.add_command(label="  复制", command=copy_text)
menu.add_command(label="  剪切", command=cut_text)
menu.add_command(label="  粘贴", command=paste_text)def show_menu(event):menu.post(event.x_root,  event.y_root)result_text.bind("<Button-3>",  show_menu)# 运行主循环
root.mainloop() 

在编写上述代码中,主要解决了以下几个问题:

1)原形和变形选错时的自动调节;2)查询按钮绑定回车键,回车就可以实现检索;3)在Entry和Text的控件里都添加了右键菜单,可以非常方便地进行复制和粘贴操作。

三、学后总结

1. 通过Python把xlsx文件转化为sql文件,并编写可视化界面来检索这个数据库,快速得到想要的内容。

2. Python不愧是瑞士军刀,在读取数据类型方面是其它工具无法超越的。这次我们充分发挥Python的胶水作用,sql文件检索速度快的特点,实现了一个小型语料库的快速检索。

3. 如果我们的语料库有几十万句对,生成一个sql后再用python检索,岂不实现了数据库检索的功能?这个问题适合我们后期继续进行探讨。

http://www.dtcms.com/wzjs/125571.html

相关文章:

  • c2c网站建设方案爱战网关键词
  • 门户网站想要微信登录怎么做免费二级域名注册网站
  • 网站正在建设中模板 html百度爱采购关键词优化
  • 深圳最好的网站建设公司网站自然排名工具
  • 网上商城网站建设外包网络推广
  • 哈尔滨网站建设设计公司舆情分析
  • 网站建设延期通知单十大免费最亏的免费app
  • 石家庄自己怎么做网站啊色盲色弱测试
  • 网站被降权表现seo专员工资待遇
  • 垫江做网站禁止搜索引擎收录的方法
  • 装修公司网站wordpress 模板网络黄页推广软件
  • 零基础学习网站开发怎样做app推广
  • 捷信做单网站百度推广和百度竞价有什么区别
  • 中标公示查询官网武汉搜索引擎排名优化
  • 专业网站建设公司排名引流推广平台
  • 设计师接私活的兼职平台长沙搜索排名优化公司
  • 一个人可做几次网站备案自动外链发布工具
  • h5响应式网站建设方案怎么写ai智能搜索引擎
  • wordpress入侵宁波seo关键词优化制作
  • 做网站微信朋友圈应该怎么发广州网站优化外包
  • 开贴纸网站要怎么做的关键词优化外包
  • 建工网校appseo的主要分析工具
  • 网站建设的准备工作百度经验官网
  • 深圳做自适应网站公司跨境电商培训机构哪个靠谱
  • 可以下载各种软件的网站网络宣传的好处
  • 怎么做网站多少钱百度seo推广优化
  • 做代购注册什么网站免费招收手游代理
  • 陕西省城乡和住房建设厅网站seo就业前景
  • 推广网店的途径和方法优化关键词哪家好
  • asp.net做网站实例西安 做网站