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

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. 木菠萝;菠萝蜜

http://www.lryc.cn/news/2379627.html

相关文章:

  • 【Linux笔记】——线程互斥与互斥锁的封装
  • Android屏幕采集编码打包推送RTMP技术详解:从开发到优化与应用
  • 【深度学习】残差网络(ResNet)
  • 《Python星球日记》 第94天:走近自动化训练平台
  • S7 200 smart连接Profinet转ModbusTCP网关与西门子1200PLC配置案例
  • React中巧妙使用异步组件Suspense优化页面性能。
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.4.7)
  • 11 web 自动化之 DDT 数据驱动详解
  • OpenCV-python灰度变化和直方图修正类型
  • 从 Excel 到 Data.olllo:数据分析师的提效之路
  • 图像定制大一统?字节提出DreamO,支持人物生成、 ID保持、虚拟试穿、风格迁移等多项任务,有效解决多泛化性冲突。
  • Nginx 动静分离在 ZKmall 开源商城静态资源管理中的深度优化
  • 在vs code 中无法运行npm并报无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查
  • 分布式2(限流算法、分布式一致性算法、Zookeeper )
  • 2089. 找出数组排序后的目标下标——O(n)做法!
  • ARM A64 LDR指令
  • 给大模型“贴膏药”:LoRA微调原理说明书
  • Spring-messaging-MessageHandler接口实现类ServiceActivatingHandler
  • asp.net core api RESTful 风格控制器
  • 【甲方安全建设】Python 项目静态扫描工具 Bandit 安装使用详细教程
  • 实习记录小程序|基于SSM+Vue的实习记录小程序设计与实现(源码+数据库+文档)
  • 老旧设备升级利器:Modbus TCP转 Profinet让能效监控更智能
  • 【从基础到模型网络】深度学习-语义分割-ROI
  • Qt控件:交互控件
  • 前端下载ZIP包方法总结
  • 掌握Docker:从运行到挂载的全面指南
  • Pandas pyecharts数据可视化基础③
  • QMK固件OLED显示屏配置教程:从零开始实现个性化键盘显示(实操部分)
  • 数据库中关于查询选课问题的解法
  • 基于Bootstrap 的网页html css 登录页制作成品