英文伪原创(python实现制作伪原创翻译小程序(一)_ )

优采云 发布时间: 2021-11-19 21:18

  英文伪原创(python实现制作伪原创翻译小程序(一)_

)

  写在开头

  我从头开始学习python,在业余时间花了大约一周的时间为伪原创编写了一个翻译小程序。它是在c#和js语言的基础上完成的,所以我没有花时间去学习基本的语法,我只是在需要的时候去使用它。现将程序实现的思路和步骤记录下来。

  编译环境使用PyCharm,然后直接进行项目开发。

  Python 基本语法

  写的时候大概看了一下python的语法。基本语法大同小异,包括各种if语句、循环语句等,因为是小程序,没有用到高级语法。唯一需要注意的是python没有{}和; 等待命令结束语句,但它是由缩进控制的。函数声明使用def关键字,变量定义不需要关键字。唯一需要注意的是def中使用全局变量需要先Affirm,否则会被判断为局部变量,无法给全局变量赋值。这个问题是我写的时候出现的,找到解决方法记录下来。

  python的特点是可以引用很多模块,而且都是第三方构建的。比如我需要使用图形控件,直接使用wxpython库。

  Python制作伪原创翻译小程序

  现在,从头开始制作的伪原创翻译小程序有两个主要版本。一开始只实现了汉英和英汉互译的功能,如图:

  

  伪原创工具

  由于现在搜索引擎对汉译英直译非常强大,文章英译汉非常强大,所以我觉得我们可以选择翻译的方式,所以改版后,选择的选项就多了翻译,最终效果如下图:

  

  汉英法汉伪原创翻译

  这样一个伪原创之后,可能和原文有点不一样。需要稍加修改,使句子流畅,但绝对不会因为重复率高而受到惩罚。关键是自己做,免费的,免费的,免费的。. 让我们来看看如何实现它。

  1.pip 安装需要的模块

  要使用 pip 安装模块,首先需要 pip。如果安装的python版本在3.4以上,pip自带,也可以使用cmd命令查看是否安装。

  

  检查pip是否安装

  如果没有安装pip,直接去官网下载pip安装即可。下载地址:

  只需下载并安装!

  本程序安装的主要库有:requests、re、hashlib、wx、time

  其中,requests模块的作用是发送网络请求,返回响应数据。re是用于正则表达式筛选的模块,hashlib hash模块主要用于生成MD5码,time模块用于根据当前时间生成随机数。wx 模块是 python 的图形用户界面(GUI),可以生成组合框、按钮等。

  在 cmd 或 pycharm 终端中,输入:

  pip install requests

  等待安装完成,表面上已经安装了requests模块。

  其余模块安装类似,安装命令如下:

  pip install re

pip install hashlib

pip install wx

pip install time

  如果遇到安装失败的问题,可能是pip版本太低的原因。升级到对应版本下载,但一般不会有问题。如图:

  

  pip版本太低2.申请百度翻译API

  由于翻译过程需要百度翻译的AIP,请先申请。步骤如下:

  打开百度翻译开放平台,登录账号,没有的话就注册一个。然后,点击“管理控制台”,提示:您需要注册成为百度翻译开发者,点击“开始注册”,然后按要求完成注册。注册后,进入控制台,找到你的APP ID和密钥,如下图:

  

  百度翻译APP ID

  记录你的id和key,后面程序会用到。

  具体如何使用百度翻译,直接给出官方文档和支持说明。参考网站:

  3.伪原创翻译小程序代码实现

  万事俱备,现在主要讲解一下实现的具体思路和步骤,最后附上完整的代码。

  1.首先导入之前安装的模块,使用import关键字,代码如下:

  import wx, requests,re,hashlib,time #导入wx包

  2. 根据百度API写一个翻译小程序

  首先定义百度翻译API变量,然后通过方法构造函数,具体代码如下:

  # 使用百度翻译api参数和配置随机数

salt = str(time.time())#随机数,设置为当前时间。

apiurl='http://api.fanyi.baidu.com/api/trans/vip/translate'

appid = "百度翻译注册的APP ID"

secretKey = '对于的密钥'

selectMode = 0 #选择默认翻译的类型

# 翻译的函数,输入翻译的文本,文本语言,输出翻译后语言

def translate(text,inlanguage,outlanguage):

text = str(text)

sign = appid + text + salt + secretKey # appid+q+salt+密钥 的MD5值

sign = hashlib.md5(sign.encode("utf-8")).hexdigest() # 对sign做md5,得到32位小写的sign

#sign = md5(sign.encode()) MD5加密

try:

# 根据技术手册中的接入方式进行设定

paramas1 = {

'appid': appid,

'q': text,

'from': inlanguage,

'to': outlanguage,

'salt': salt,

'sign': sign

}

response = requests.get(apiurl, paramas1)

jsonResponse = response.json() # 获得返回的结果,结果为json格式

dst = str(jsonResponse["trans_result"][0]["dst"]) # 取得翻译后的文本结果

print(dst)

return dst

except Exception as e:

print(e)

  注意APP ID和key是在第二步注册的,可以免费使用。实名认证后每天免费翻译200万字,正常使用完全够用。

  3. 用 wx 创建一个页面

  这一步主要是设置两个文本容器来存放需要翻译和翻译的文本容器,然后设置一个combox容器来选择不同的翻译模式。最后,将按钮按钮设置为翻译按钮。主要代码如下:

  #创建应用程序对象

app = wx.App()

win = wx.Frame(None, title="cyl伪原创工具".encode('utf8'), size=(800, 700))#size为默认窗口大小,可以根据自己的需要设置win.Show()

#添加两个文本框

contents1 = wx.TextCtrl(win, pos=(5, 5), size=(800, 300), style=wx.TE_MULTILINE | wx.TE_RICH)

contents2 = wx.TextCtrl(win, pos=(5, 380), size=(800, 340), style=wx.TE_MULTILINE | wx.TE_RICH)

# 添加翻译按钮

loadButton = wx.Button(win, label='翻译'.encode('utf8'), pos=(400, 330), size=(120, 40))

# 添加combox选择容器

listChoices = ['中-英','英-中','中-英-中','中-英-法-中']#列表框选项wx.ListBox

panel = wx.Panel(parent=win, pos=(200,325), size=(400,50))# 容器

selectCombox = wx.ComboBox(panel, pos=(10,10), value='中-英',choices=listChoices, style=0)#combox框创建,wx.CB_SORT表示排序

# 设置combox的选择触发事件

def setSelectValue():

global selectMode

selectMode= selectCombox.GetCurrentSelection()

print(listChoices)

# 获取数量,获取当前选择索引,获取当前选择值

# print(selectCombox.GetCount())

# print(selectCombox.GetCurrentSelection())

selectCombox.Bind(wx.EVT_COMBOBOX,setSelectValue)

  in. selectMode 是一个全局变量,表示选择了翻译模式。combox 的索引用于替换选择的模式。在函数中赋值selectMode的时候一定要记得用global 关键词来引用全局变量而不是Local变量。

  4. 最后根据翻译模式,触发botton按钮调用翻译函数进行翻译,将翻译后的文本写入第二个文本容器中。功能如下:

  # 伪原创方法

def wyc(event):

contents2.Clear()#清空内容

text = contents1.GetValue();

if text:

text1 = text + "\n"

text_list = re.findall('(.*?)\s+',text1)

print(selectMode)

for text in text_list:

if selectMode == 0:

wyctext = translate(text,'zh','en')

contents2.AppendText(wyctext+'\n')

if selectMode == 1:

wyctext = translate(text,'en','zh')

contents2.AppendText(wyctext+'\n')

if selectMode == 2:

wyctext = translate(text,'zh','en')

wyctext = translate(wyctext, 'en', 'zh')

contents2.AppendText(wyctext+'\n')

if selectMode == 3:

wyctext = translate(text,'zh','en')

wyctext = translate(wyctext, 'en', 'fra')

wyctext = translate(wyctext, 'fra', 'zh')

contents2.AppendText(wyctext+'\n')

else:

wx.MessageBox("检测内容为空")

  通过多次翻译,实现复杂的翻译变换。

  4.伪原创 代码打包

  程序写好后,需要打包成应用程序,才能在没有编译器的情况下运行。现在将上面的程序代码打包成一个程序,操作就很简单了。

  首先,在pycharm终端中,输入

  pip install pyinstaller

  安装完成后,直接输入如下命令打包自己的程序:

  pyinstaller --console --onefile main.py

  注意:main.py是你要打包程序的py文件,改成你自己的py文件即可。打包完成后会在同级目录下生成dist文件夹,程序在dist文件夹下。

  最好,运行程序,你就完成了。

  

  伪原创 写在最后

  通过这个实际项目,我发现python确实是一门好用的高级编程语言,但是在学习的过程中也存在一些困扰我的问题。例如,全局变量需要使用 global 关键字来调用函数;刚接触combox的时候,不知道怎么调用他的触发事件;conbox的列表选项设置,一开始看网上的代码,样式设置为自动排序,导致列表选项文本不匹配,最后解决了,不过python简单,效率不高高。如果觉得有用,欢迎关注cylgis。

  完整代码

  注意:需要更改应用程序 ID 和密钥。

  import wx, requests,re,hashlib,time #导入wx包

selectinlanguage = 'zh'#默认输入中文

outlanguage = 'en'#默认输出英文

# 使用百度翻译api参数和配置随机数

salt = str(time.time())#随机数,设置为当前时间。

apiurl='http://api.fanyi.baidu.com/api/trans/vip/translate'

appid = "*****"

secretKey = '******'

selectMode = 0 #选择默认翻译的类型

# 翻译的函数,输入翻译的文本,文本语言,输出翻译后语言

def translate(text,inlanguage,outlanguage):

text = str(text)

sign = appid + text + salt + secretKey # appid+q+salt+密钥 的MD5值

sign = hashlib.md5(sign.encode("utf-8")).hexdigest() # 对sign做md5,得到32位小写的sign

#sign = md5(sign.encode()) MD5加密

try:

# 根据技术手册中的接入方式进行设定

paramas1 = {

'appid': appid,

'q': text,

'from': inlanguage,

'to': outlanguage,

'salt': salt,

'sign': sign

}

response = requests.get(apiurl, paramas1)

jsonResponse = response.json() # 获得返回的结果,结果为json格式

dst = str(jsonResponse["trans_result"][0]["dst"]) # 取得翻译后的文本结果

print(dst)

return dst

except Exception as e:

print(e)

#创建应用程序对象

app = wx.App()

win = wx.Frame(None, title="cyl伪原创工具".encode('utf8'), size=(800, 700))#size为默认窗口大小,可以根据自己的需要设置win.Show()

#添加两个文本框

contents1 = wx.TextCtrl(win, pos=(5, 5), size=(800, 300), style=wx.TE_MULTILINE | wx.TE_RICH)

contents2 = wx.TextCtrl(win, pos=(5, 380), size=(800, 340), style=wx.TE_MULTILINE | wx.TE_RICH)

# 添加翻译按钮

loadButton = wx.Button(win, label='翻译'.encode('utf8'), pos=(400, 330), size=(120, 40))

# 添加combox选择容器

listChoices = ['中-英','英-中','中-英-中','中-英-法-中']#列表框选项wx.ListBox

panel = wx.Panel(parent=win, pos=(200,325), size=(400,50))# 容器

selectCombox = wx.ComboBox(panel, pos=(10,10), value='中-英',choices=listChoices, style=0)#combox框创建,wx.CB_SORT表示排序

# 设置combox的选择触发事件

def setSelectValue():

global selectMode

selectMode= selectCombox.GetCurrentSelection()

print(listChoices)

# 获取数量,获取当前选择索引,获取当前选择值

# print(selectCombox.GetCount())

# print(selectCombox.GetCurrentSelection())

selectCombox.Bind(wx.EVT_COMBOBOX,setSelectValue)

# 伪原创方法

def wyc(event):

contents2.Clear()#清空内容

text = contents1.GetValue();

if text:

text1 = text + "\n"

text_list = re.findall('(.*?)\s+',text1)

print(selectMode)

for text in text_list:

if selectMode == 0:

wyctext = translate(text,'zh','en')

contents2.AppendText(wyctext+'\n')

if selectMode == 1:

wyctext = translate(text,'en','zh')

contents2.AppendText(wyctext+'\n')

if selectMode == 2:

wyctext = translate(text,'zh','en')

wyctext = translate(wyctext, 'en', 'zh')

contents2.AppendText(wyctext+'\n')

if selectMode == 3:

wyctext = translate(text,'zh','en')

wyctext = translate(wyctext, 'en', 'fra')

wyctext = translate(wyctext, 'fra', 'zh')

contents2.AppendText(wyctext+'\n')

else:

wx.MessageBox("检测内容为空")

# 再一次翻译清空选择

def selectList():

contents2.Clear() # 清空内容

#为按钮添加绑定事件,点击按钮执行wyc函数

loadButton.Bind(wx.EVT_BUTTON, wyc)

win.Show() #显示窗体

app.MainLoop()#运行程序

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线