简易单词翻译工具的制作

文章目录

  • 简易翻译工具的制作
    • 需要配置
      • 快速下载:
      • 关于chromedriver(重要)
    • 代码区
      • 库的引入
      • 单词记录界面的构造
      • 单词翻译界面的构造
      • 主函数运行

简易翻译工具的制作

在阅读英语文章中遇到生词时,通常会诉诸于网络翻译,但若是想把单词记录下来,往往需要“手自笔录”与Excel,Word等地方,十分麻烦。在此提供一个程序,通过输入批量单词,生成对应的单词–翻译对应表,并可以选择将其导入至Excel文件。

需要配置

  1. Chrome浏览器
  2. chromedriver
  3. selenium库,wxPython库,Numpy库

快速下载:

命令行输入pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 库名

关于chromedriver(重要)

  1. 下载Chromedriver
    在页面http://chromedriver.storage.googleapis.com/index.html中选择您正在使用的Chrome浏览器版本,进入并选择“chromedriver_win32.zip”.(如果您的电脑是Linux或Mac则选择相应下载项)点击下载
    p.s 如何查看浏览器版本:在这里插入图片描述
    点击Chrome右上角的竖排三点,帮助→关于Google Chrome.
  2. 解压缩文件后,发现只有一个EXE文件:chromedrover.exe,将该文件移到chrome.exe所在的文件夹:
  3. 添加路径
    右键单击‘此电脑’选择“属性”在这里插入图片描述
    选择左上角的高级系统设置:
    在这里插入图片描述
    点击环境变量:
    在这里插入图片描述
    选择系统变量中的Path:在这里插入图片描述
    点击新建将Chrome所在文件夹路径加入其中(如下图最后一行所示)

    4.一路点击确定即可

代码区

库的引入

from selenium import webdriver
import pandas as pd
import wx, os
import numpy as np 

单词记录界面的构造

def RecordSurface():class RecordSurface(wx.Frame): #实现记录单词的GUI界面word_list = ""def __init__(self, parent=None, id=-1):super().__init__(parent, id=id, title='单词记录', size=(400, 300))self.Center()panel = wx.Panel(self)wx.StaticText(panel, label='输入新单词,一个单词一行', pos=(135, 10))self.text = wx.TextCtrl(panel,size=(100, 150),pos=(150, 30),style=wx.TE_MULTILINE)self.button_confirm = wx.Button(panel, label='确认', pos=(120, 190))self.button_cancel = wx.Button(panel, label='取消', pos=(210, 190))self.button_confirm.Bind(wx.EVT_BUTTON, self.OnclickSubmit)self.button_cancel.Bind(wx.EVT_BUTTON, self.OnclickCancel)def OnclickSubmit(self, event):#点击确认键则提交输入单词self.word_list = self.text.GetValue().splitlines()self.Close()def OnclickCancel(self, event): #点击取消则清空输入self.text.SetValue("")app = wx.App() #执行GUI界面运转(frame := RecordSurface()).Show()app.MainLoop() #结束GUI界面运转return frame.word_list #返回所记录的生词列表

单词翻译界面的构造

def Translator(word_list: list):option = webdriver.ChromeOptions()option.add_argument('headless')browser = webdriver.Chrome(chrome_options=option) browser.get('http://fanyi.youdao.com/')#前4行:以不显式打开Chrome页面的方式访问有道翻译browser.find_element_by_id('inputOriginal').send_keys('\n'.join(word_list)) #在有道翻译页面找到填写单词的HTML元素并向其中递交生词序列browser.find_element_by_id('transMachine').click() #点击页面中的翻译按钮df = pd.DataFrame({'单词': word_list, '释义': browser.find_element_by_id("transTarget").text.splitlines()}) #将生词和释义构成template = "%-15s%s\n"str_df = "单词".center(15) + "释义".center(10) + '\n'for e in list(np.array(df)):str_df += (e[0].center(15) + e[1].center(10) + '\n') #生成在GUI上展示的单词--释义对照表class Translator(wx.Frame): #单词翻译界面def __init__(self, parent=None, id=-1):super().__init__(parent, id=id,size=(400,300),title='翻译完成')panel = wx.Panel(self)self.Center()self.text = wx.TextCtrl(panel, size=(200, 150), pos=(90, 35),style=wx.TE_MULTILINE|wx.TE_READONLY)self.text.SetValue(str_df)wx.StaticText(panel, label='翻译完成,结果如下', pos=(140, 10))self.button_save = wx.Button(panel, label='导出Excel',pos=(110, 200)) self.button_exit = wx.Button(panel, label='完成', pos=(200, 200))self.button_save.Bind(wx.EVT_BUTTON, self.Save)self.button_exit.Bind(wx.EVT_BUTTON, self.Exit)def Save(self, event): #选择以xlsx的形式导出到本文件夹if not os.path.exists('word.xlsx'):df.to_excel('word.xlsx') #如果第一次使用,则新建文件else: pd.concat([pd.read_excel('word.xlsx', index_col=0), df], ignore_index=True).to_excel('word.xlsx') # 多次使用,则是在尾部添加内容wx.MessageBox('导出成功!文件名:"word.xlsx"')self.Close()wx.MessageBox('欢迎再次使用本系统!')def Exit(self, event):self.Close()wx.MessageBox('欢迎再次使用本系统!') #观察结果后直接退出app = wx.App()Translator().Show()app.MainLoop()

主函数运行

if __name__ == "__main__":Translator(RecordSurface()) #先运行单词记录界面,返回单词列表,然后翻译

然后就可以进行翻译操作啦!但是不足之处存在:未设计长句翻译功能,不容忍拼写错误(拼成另一个合法单词除外)等,如果有读者对此有类似需求的话,我会持续更新!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部