Python 翻译词典小程序
一、概述
本工具是基于Python开发的智能翻译系统,采用有道词典进行翻译,并具有本地词典缓存以及单词本功能。 版本号:v1.0 (2025-05-15)
二、核心功能说明
1. 基础翻译功能
-
即时翻译:输入英文单词自动获取中文释义
-
词性识别:自动标注单词词性(名词/动词等)
-
网络查询:实时获取最新词典数据
-
离线查询: 对以查过的单词,首先在本地SQLITE数据库查找
2. 数据存储系统
-
翻译历史:
-
自动存储所有查询记录
-
字段包含:英文单词、中文释义、词性、查询时间
-
-
生词本管理:
-
支持手动添加/移除生词
-
按添加时间倒序排列
-
独立数据库表存储收藏关系
""" 小小词典 V1.0 Copyright (C) 2025 yoyoThis program is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation, either version 3 of the License, or(at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program. If not, see <https://www.gnu.org/licenses/>. """ import sqlite3 import requests from bs4 import BeautifulSoupdef init_db():conn = sqlite3.connect('translations.db')c = conn.cursor()c.execute('''CREATE TABLE IF NOT EXISTS translations(id INTEGER PRIMARY KEY AUTOINCREMENT,english TEXT UNIQUE NOT NULL,chinese TEXT NOT NULL,pos TEXT,create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP)''')# 新增生词本表c.execute('''CREATE TABLE IF NOT EXISTS vocabulary_book(id INTEGER PRIMARY KEY AUTOINCREMENT,word_id INTEGER UNIQUE,add_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,FOREIGN KEY(word_id) REFERENCES translations(id))''')conn.commit()conn.close()def add_to_vocabulary(word):conn = sqlite3.connect('translations.db')c = conn.cursor()# 获取单词IDc.execute("SELECT id FROM translations WHERE english=?", (word,))word_id = c.fetchone()if word_id:try:c.execute("INSERT OR IGNORE INTO vocabulary_book (word_id) VALUES (?)", (word_id[0],))conn.commit()print(f"【{word}】已成功加入生词本")except sqlite3.IntegrityError:print(f"【{word}】已在生词本中")else:print("请先查询该单词确保其存在于数据库")conn.close()def show_vocabulary():conn = sqlite3.connect('translations.db')c = conn.cursor()c.execute('''SELECT t.english, t.chinese, t.pos FROM translations t JOIN vocabulary_book v ON t.id = v.word_idORDER BY v.add_time DESC''')print("\n=== 我的生词本 ===")for idx, (en, cn, pos) in enumerate(c.fetchall(), 1):print(f"{idx}. {en} ({pos}): {cn}")conn.close()def save_to_db(english, chinese, pos):conn = sqlite3.connect('translations.db')c = conn.cursor()c.execute("INSERT OR IGNORE INTO translations (english, chinese, pos) VALUES (?, ?, ?)",(english, chinese, pos))conn.commit()conn.close()def check_in_db(word):conn = sqlite3.connect('translations.db')c = conn.cursor()c.execute("SELECT english, chinese, pos FROM translations WHERE english=?", (word,))result = c.fetchone()conn.close()return result if result else Nonedef translate_with_pos(word):# 先查本地数据库db_result = check_in_db(word)if db_result:print(f"该单词已在本地数据库查找到,翻译解释如下:")print(f"{db_result[0]} ({db_result[2]}): {db_result[1]}")choice = input("继续网络查询请输入w,直接退出请按回车:").strip().lower()if choice != 'w':return Noneurl = f"https://dict.youdao.com/w/eng/{word}/"headers = {'User-Agent': 'Mozilla/5.0'}try:response = requests.get(url, headers=headers)soup = BeautifulSoup(response.text, 'html.parser')# 获取中文释义trans = soup.find('div', class_='trans-container').get_text(strip=True)# 获取词性标注pos_tag = soup.find('span', class_='pos')pos = pos_tag.get_text() if pos_tag else "无词性标注"save_to_db(word, trans, pos)return f"{word} ({pos}): {trans}"except Exception as e:return f"翻译失败: {str(e)}"if __name__ == "__main__":init_db()print("命令: \q 退出;\w 加入生词本 \s 查看生词本 \h 查看帮助")while True:query = input("请输入英文单词或命令(输入\q退出): ").strip()if query.lower() == '\q':breakif query.lower() == '\w':word = input("输入要收藏的单词: ").strip()add_to_vocabulary(word)continueif query.lower() == '\s':show_vocabulary()continueif query.lower() == '\h':print("命令: \q 退出;\w 加入生词本 \s 查看生词本 \h 查看帮助")continuetrans = translate_with_pos(query)if trans:print(f"- {trans}")
运行实例:
-
(.venv) D:\sanxia-src>translate.py 命令: \q 退出;\w 加入生词本 \s 查看生词本 \h 查看帮助 请输入英文单词或命令(输入\q退出): \s=== 我的生词本 === 1. water (n.): n. 水,雨水;水域,(江、河、湖、海等)大片的水;(某个国家的)领海,海域(waters);不明朗(或未知的、困难、危险等)局面(waters);羊水(waters);(湖、海的)水面;水位;乘船,走水路v. 给……浇水,灌溉;给…...水喝,饮(动物);(风等使眼睛)流泪;流口水;(江河)流经并给(某地区)供水;加水冲淡,稀释【名】 (Water)(英)沃特(人名)[复数waters第三人称单数waters现在分词watering过去式watered过去分词watered] 请输入英文单词或命令(输入\q退出): yes - yes (n.): adv. 是,是的n. 是(表示肯定)[复数yesses或yeses第三人称单数yesses或yeses现在分词yessing过去式yessed过去分词yessed] 请输入英文单词或命令(输入\q退出): level - level (n.): n. 数量,程度;标准,水平;层次,级别;看待(或应对、理解)事物的方式;水平高度,相对高度;楼层;平地;水平仪adj. 平坦的,水平的;相同价值的,相同地位的;比分相同的;平静的,冷静的v. 使平整;推倒,夷平;(使)比分相同;(尤指用枪)瞄准;针对……(进行批评等);稳定下来,达到平衡(level off);坦诚相见;作水准测量【名】 (Level)(法)勒韦尔(人名)[复数levels第三人称单数levels现在分词levelling或leveling过去式levelled或leveled过去分词levelled或leveled] 请输入英文单词或命令(输入\q退出): jackfruit - jackfruit (n.): n. 木菠萝;菠萝蜜
-
相关文章:
Python 翻译词典小程序
一、概述 本工具是基于Python开发的智能翻译系统,采用有道词典进行翻译,并具有本地词典缓存以及单词本功能。 版本号:v1.0 (2025-05-15) 二、核心功能说明 1. 基础翻译功能 即时翻译:输入英文单词自动获取中文释义 词性识别&…...

【Linux笔记】——线程互斥与互斥锁的封装
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:Linux 🌹往期回顾🌹:【Linux笔记】——Linux线程封装 🔖流水不争,争的是滔滔不息 一、线程互斥的概念二、互…...

Android屏幕采集编码打包推送RTMP技术详解:从开发到优化与应用
在现代移动应用中,屏幕采集已成为一个广泛使用的功能,尤其是在实时直播、视频会议、远程教育、游戏录制等场景中,屏幕采集技术的需求不断增长。Android 平台为开发者提供了 MediaProjection API,这使得屏幕录制和采集变得更加简单…...

【深度学习】残差网络(ResNet)
如果按照李沐老师书上来,学完 VGG 后还有 NiN 和 GoogLeNet 要学,但是这两个我之前听都没听过,而且我看到我导师有发过 ResNet 相关的论文,就想跳过它们直接看后面的内容。 现在看来这不算是不踏实,因为李沐老师说如果…...

《Python星球日记》 第94天:走近自动化训练平台
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、自动化训练平台简介1. Kubeflow Pipelines2. TensorFlow Extended (TFX) 二…...

S7 200 smart连接Profinet转ModbusTCP网关与西门子1200PLC配置案例
控制要求:使用MODBUSTCP通信进行两台PLC之间的数据交换,由于改造现场不能改动程序,只留出了对应的IQ地址。于是客户决定使用网关进行通讯把数据传到plc。 1、读取服务器端40001~40005地址中的数据,放入到VW200~VW208中࿱…...
React中巧妙使用异步组件Suspense优化页面性能。
文章目录 前言一、为什么需要异步组件?1. 性能瓶颈分析2. 异步组件的价值 二、核心实现方式1. React.lazy Suspense(官方推荐)2. 路由级代码分割(React Router v6) 总结 前言 在 React 应用中,随着功能复…...

学习笔记:黑马程序员JavaWeb开发教程(2025.4.7)
12.9 登录校验-Filter-入门 /*代表所有,WebFilter(urlPatterns “/*”)代表拦截所有请求 Filter是JavaWeb三大组件,不是SpringBoot提供的,要在SpringBoot里面使用JavaWeb,则需要加上ServletComponentScan注…...
11 web 自动化之 DDT 数据驱动详解
文章目录 一、DDT 数据驱动介绍二、实战 一、DDT 数据驱动介绍 数据驱动: 现在主流的设计模式之一(以数据驱动测试) 结合 unittest 框架如何实现数据驱动? ddt 模块实现 数据驱动的意义: 通过不同的数据对同一脚本实现…...

OpenCV-python灰度变化和直方图修正类型
实验1 实验内容 该段代码旨在读取名为"test.png"的图像,并将其转换为灰度图像。使用加权平均值法将原始图像的RGB值转换为灰度值。 代码注释 image cv.imread("test.png")h np.shape(image)[0] w np.shape(image)[1] gray_img np.zeros…...
从 Excel 到 Data.olllo:数据分析师的提效之路
背景:Excel 的能力边界 对许多数据分析师而言,Excel 是入门数据处理的第一工具。然而,随着业务数据量的增长,Excel 的一些固有限制逐渐显现: 操作容易出错,难以审计; 打开或操作百万行数据时&…...

图像定制大一统?字节提出DreamO,支持人物生成、 ID保持、虚拟试穿、风格迁移等多项任务,有效解决多泛化性冲突。
字节提出了一个统一的图像定制框架DreamO,支持人物生成、 ID保持、虚拟试穿、风格迁移等多项任务,不仅在广泛的图像定制场景中取得了高质量的结果,而且在适应多条件场景方面也表现出很强的灵活性。现在已经可以支持消费级 GPU(16G…...

Nginx 动静分离在 ZKmall 开源商城静态资源管理中的深度优化
在 B2C 电商高并发场景下,静态资源(图片、CSS、JavaScript 等)的高效管理直接影响页面加载速度与用户体验。ZKmall开源商城通过对 Nginx 动静分离技术的深度优化,将静态资源响应速度提升 65%,带宽成本降低 40%…...

在vs code 中无法运行npm并报无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查
问题: npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查 原因: 可能是环境变量未正确继承或终端配置不一致 解决方法: 1.找到自己的node.js的版本号 2.重新下载node.js 下载 node.js - https://nodejs.p…...

分布式2(限流算法、分布式一致性算法、Zookeeper )
目录 限流算法 固定窗口计数器(Fixed Window Counter) 滑动窗口计数器(Sliding Window Counter) 漏桶算法(Leaky Bucket) 令牌桶算法(Token Bucket) 令牌桶与漏桶的对比 分布式…...
2089. 找出数组排序后的目标下标——O(n)做法!
本题要求在一个已排序的数组 nums 中,找出所有等于目标值 target 的元素下标。若不存在这样的元素,则返回 {-1, -1}。解决该问题有两种主要方法:二分查找法和统计计数法。 二分查找法:首先对数组进行排序,然后通过二分…...

ARM A64 LDR指令
ARM A64 LDR指令 1 LDR (immediate)1.1 Post-index1.2 Pre-index1.3 Unsigned offset 2 LDR (literal)3 LDR (register)4 其他LDR指令变体4.1 LDRB (immediate)4.1.1 Post-index4.1.2 Pre-index4.1.3 Unsigned offset 4.2 LDRB (register)4.3 LDRH (immediate)4.3.1 Post-index…...
给大模型“贴膏药”:LoRA微调原理说明书
一、前言:当AI模型开始“叛逆” 某天,我决定教deepseek说方言。 第一次尝试(传统微调): 我:给deepseek灌了100G东北小品数据集,训练三天三夜。结果:AI确实会喊“老铁666”了…但英…...
Spring-messaging-MessageHandler接口实现类ServiceActivatingHandler
ServiceActivatingHandler实现了MessageHandler接口,所以它是一个MessageHandler,在spring-integration中,它也叫做服务激活器(Service Activitor),因为这个类是依赖spring容器BeanFactory的,所…...
asp.net core api RESTful 风格控制器
在 ASP.NET Core API 中,遵循 RESTful 风格的控制器一般具备以下几个关键特征: ✅ RESTful 风格控制器的命名规范 控制器命名 使用 复数名词,表示资源集合,如 ProductsController、UsersController。 路由风格 路由使用 [Rout…...
【甲方安全建设】Python 项目静态扫描工具 Bandit 安装使用详细教程
文章目录 一、工具简介二、工具特点1.聚焦安全漏洞检测2.灵活的扫描配置3.多场景适配4.轻量且社区活跃三、安装步骤四、使用方法场景1:扫描单个Python文件场景2:递归扫描整个项目目录五、结果解读六、总结一、工具简介 Bandit 是由Python官方推荐的静态代码分析工具(SAST)…...

实习记录小程序|基于SSM+Vue的实习记录小程序设计与实现(源码+数据库+文档)
实习记录小程序 目录 基于SSM的习记录小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1、小程序端: 2、后台 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码…...

老旧设备升级利器:Modbus TCP转 Profinet让能效监控更智能
在工业自动化领域,ModbusTCP和Profinet是两种常见的通讯协议。Profinet是西门子公司推出的基于以太网的实时工业以太网标准,而Modbus则是由施耐德电气提出的全球首个真正开放的、应用于电子控制器上的现场总线协议。这两种协议各有各的优点,但…...

【从基础到模型网络】深度学习-语义分割-ROI
在语义分割中,ROI(Region of Interest,感兴趣区域)是图像中需要重点关注的部分。其作用包括:提高效率,减少高分辨率图像的计算量;增强分割精度,聚焦关键语义信息;减少背景…...
Qt控件:交互控件
交互控件 1. QAction核心功能API 1.2 实例应用情况应用场景 1.3 QAction与QPushButton/QToolButton关系QActionQPushButtonQToolButton三者关系 1. QAction ##1. 1简介与API QAction 是一个核心类,用于表示应用程序中的一个操作(如菜单项、工具栏按钮或…...
前端下载ZIP包方法总结
在前端实现下载 ZIP 包到本地,通常有以下几种方法,具体取决于 ZIP 包的来源(静态文件、后端生成、前端动态生成等): 方法 1:直接下载静态文件(最简单) 如果 ZIP 包是服务器上的静态…...

掌握Docker:从运行到挂载的全面指南
目录 1. Docker的运行2. 查看Docker的启动日志3. 停止容器4. 容器的启动5. 删除容器6. 查看容器的详细信息7.一条命令关闭所有容器拓展容器的复制(修改数据不会同步)容器的挂载(修改数据可以同步)挂载到现有容器 1. Docker的运行 …...

Pandas pyecharts数据可视化基础③
pyecharts基础绘图案例解析 引言思维导图代码案例分析 提前安装依赖同样操作安装完重新启动Jupyter Notebook三维散点图(代码5 - 40) 代码结果代码解析 漏斗图(代码5 - 41)结果代码解析 词云图(代码5 - 42)…...
QMK固件OLED显示屏配置教程:从零开始实现个性化键盘显示(实操部分)
QMK固件OLED显示屏配置教程:从零开始实现个性化键盘显示 📢 前言: 作为一名键盘爱好者,近期研究了QMK固件的OLED显示屏配置,发现网上的教程要么太过复杂,要么过于简单无法实际操作。因此决定写下这篇教程,从零基础出发,带大家一步步实现键盘OLED屏幕的配置与个性化显示…...

数据库中关于查询选课问题的解法
前言 今天上午起来复习了老师上课讲的选课问题。我总结了三个解法以及一点注意事项。 选课问题介绍 简单来说就是查询某某同学没有选或者选了什么课。然后查询出该同学的姓名,学号,课程号,课程名之类的。 sql文件我上传了。大家可以尝试练…...