一、概述
本工具是基于python开发的智能翻译系统,采用有道词典进行翻译,并具有本地词典缓存以及单词本功能。 版本号:v1.0 (2025-05-15)
二、核心功能说明
1. 基础翻译功能
- 即时翻译:输入英文单词自动获取中文释义
- 词性识别:自动标注单词词性(名词/动词等)
- 网络查询:实时获取最新词典数据
- 离线查询: 对以查过的单词,首先在本地sqlite数据库查找
2. 数据存储系统
- 翻译历史:
- 自动存储所有查询记录
- 字段包含:英文单词、中文释义、词性、查询时间
- 生词本管理:
- 支持手动添加/移除生词
- 按添加时间倒序排列
- 独立数据库表存储收藏关系
"""
小小词典 v1.0
copyright (c) 2025 yang xiaofan
this program is free software: you can redistribute it and/or modify
it under the terms of the gnu general public license as published by
the 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 of
merchantability or fitness for a particular purpose. see the
gnu general public license for more details.
you should have received a copy of the gnu general public license
along with this program. if not, see <https://www.gnu.org/licenses/>.
"""
import sqlite3
import requests
from bs4 import beautifulsoup
def 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()
# 获取单词id
c.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_id
order 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 none
def 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 none
url = 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':
break
if query.lower() == '\w':
word = input("输入要收藏的单词: ").strip()
add_to_vocabulary(word)
continue
if query.lower() == '\s':
show_vocabulary()
continue
if query.lower() == '\h':
print("命令: \q 退出;\w 加入生词本 \s 查看生词本 \h 查看帮助")
continue
trans = 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 翻译词典内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论