利用Python实现汉译英的三种方法
一、前言
有道翻译API(主要推荐)
百度翻译API(需要申请key与密钥,每月100万免费字符)
谷歌翻译API(需要梯子,而且不稳定,不推荐)
二、代码
1、判断文本是否存在中文
def is_Chinese(content): # 判断输入的内容是否是中文for ch in content:if '\u4e00' <= ch <= '\u9fff':return Trueelse:return False
2、有道翻译
import urllib.request
import urllib.parse
import json
import requests # pip intasll requests
import execjs # 安装指令:pip install PyExecJS
import random
import hashlib
import re# 有道翻译方法,不支持一次翻译一大段文字
def youdao_translate(content):'''实现有道翻译的接口'''url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&sessionFrom=https://www.baidu.com/link'data = {'from': 'AUTO','to': 'AUTO','smartresult': 'dict','client': 'fanyideskweb','salt': '1500092479607','sign': 'd9f9a3aa0a7b34241b3fe30505e5d436','doctype': 'json','version': '2.1','keyfrom': 'fanyi.web','action': 'FY_BY_CL1CKBUTTON','typoResult': 'true'}data['i'] = content.replace('\n', '')data = urllib.parse.urlencode(data).encode('utf-8')wy = urllib.request.urlopen(url, data)html = wy.read().decode('utf-8')ta = json.loads(html)res = ta['translateResult'][0][0]['tgt']return resif __name__ == '__main__':res = youdao_translate("红色,沙发")
3、百度翻译
import urllib.request
import urllib.parse
import json
import requests # pip intasll requests
import execjs # 安装指令:pip install PyExecJS
import random
import hashlib
import re# 百度翻译方法
def baidu_translate(content):print(content)if len(content) > 4891:return '输入请不要超过4891个字符!'salt = str(random.randint(0, 50))# 申请网站 http://api.fanyi.baidu.com/api/transappid = '201912XXXXXXXXXXX' # 这里写你自己申请的secretKey = 'e83BXpQXXXXXXXXXXX' # 这里写你自己申请的sign = appid + content + salt + secretKeysign = hashlib.md5(sign.encode(encoding='UTF-8')).hexdigest()head = {'q': f'{content}','from': 'en','to': 'zh','appid': f'{appid}','salt': f'{salt}','sign': f'{sign}'}j = requests.get('http://api.fanyi.baidu.com/api/trans/vip/translate', head)print(j.json())res = j.json()['trans_result'][0]['dst']res = re.compile('[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]').sub(' ', res)print(res)return resif __name__ == '__main__':ret = baidu_translate("红色,沙发")print(ret)
4、谷歌翻译
import urllib.request
import urllib.parse
import json
import requests # pip intasll requests
import execjs # 安装指令:pip install PyExecJS
import random
import hashlib
import reclass Py4Js():def __init__(self):self.ctx = execjs.compile(""" function TL(a) { var k = ""; var b = 406644; var b1 = 3293161072; var jd = "."; var $b = "+-a^+6"; var Zb = "+-3^+b+-f"; for (var e = [], f = 0, g = 0; g < a.length; g++) { var m = a.charCodeAt(g); 128 > m ? e[f++] = m : (2048 > m ? e[f++] = m >> 6 | 192 : (55296 == (m & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (m = 65536 + ((m & 1023) << 10) + (a.charCodeAt(++g) & 1023), e[f++] = m >> 18 | 240, e[f++] = m >> 12 & 63 | 128) : e[f++] = m >> 12 | 224, e[f++] = m >> 6 & 63 | 128), e[f++] = m & 63 | 128) } a = b; for (f = 0; f < e.length; f++) a += e[f], a = RL(a, $b); a = RL(a, Zb); a ^= b1 || 0; 0 > a && (a = (a & 2147483647) + 2147483648); a %= 1E6; return a.toString() + jd + (a ^ b) }; function RL(a, b) { var t = "a"; var Yb = "+"; for (var c = 0; c < b.length - 2; c += 3) { var d = b.charAt(c + 2), d = d >= t ? d.charCodeAt(0) - 87 : Number(d), d = b.charAt(c + 1) == Yb ? a >>> d: a << d; a = b.charAt(c) == Yb ? a + d & 4294967295 : a ^ d } return a } """)def getTk(self, text):return self.ctx.call("TL", text)# 谷歌翻译方法:需要梯子,目前有些问题,暂不考虑
def google_translate(content):'''实现谷歌的翻译'''content = content.replace('\n', '')print(content)js = Py4Js()tk = js.getTk(content)if len(content) > 4891:return '输入请不要超过4891个字符!'param = {'tk': tk, 'q': content}result = requests.get("""http://translate.google.cn/translate_a/single?client=t&sl=en &tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss &dt=t&ie=UTF-8&oe=UTF-8&clearbtn=1&otf=1&pc=1&srcrom=0&ssel=0&tsel=0&kc=2""", params=param)# 返回的结果为Json,解析为一个嵌套列表trans = result.json()[0]res = ''for i in range(len(trans)):line = trans[i][0]if line != None:res += trans[i][0]return resif __name__ == '__main__':# res = google_translate("红色,沙发")# print(res)
相关文章:
利用Python实现汉译英的三种方法
一、前言 有道翻译API(主要推荐) 百度翻译API(需要申请key与密钥,每月100万免费字符) 谷歌翻译API(需要梯子,而且不稳定,不推荐) 二、代码 1、判断文本是否存在中文…...
磁盘均衡器:HDFS Disk Balancer
HDFS Disk Balancer 背景产生的问题以及解决方法 hdfs disk balancer简介HDFS Disk Balancer功能数据传播报告 HDFS Disk Balancer开启相关命令 背景 相比较于个人PC,服务器一般可以通过挂载多块磁盘来扩大单机的存储能力在Hadoop HDFS中,DataNode负责最…...
蔚小理新势力互联网造车在CAN FD硬件主框架及后装控制方案开发
在国内,新势力造车影响已经非常之大,整个造车大潮中,新整车企业蔚来汽车、小鹏汽车、理想汽车无一例外选择了CAN FD作为主要的车载通信总线,特斯拉推出了引领汽车EE架构集中化的趋势,即使在车载以太网EE架构快速发展的…...
左叶子之和
404. 左叶子之和 简单(有点意思 第一次我也写错了 先自己递归去写 如果不行看答案 我感觉还是蛮不错的) 示例 1: 输入: root [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15…...
Java版知识付费平台免费搭建 Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台qt
Java版知识付费源码 Spring CloudSpring BootMybatisuniapp前后端分离实现知识付费平台 提供职业教育、企业培训、知识付费系统搭建服务。系统功能包含:录播课、直播课、题库、营销、公司组织架构、员工入职培训等。 提供私有化部署,免费售…...
LeetCode343. 整数拆分
343. 整数拆分 文章目录 [343. 整数拆分](https://leetcode.cn/problems/integer-break/)一、题目二、题解方法一:动态规划方法改良 一、题目 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整…...
单机,集群和分布式概念
单机的局限性: 1.受限于硬件资源,单机所能承受的用户并发量太少; 2.一个系统有多个模块,任意模块的修改都会导致整个项目代码重新编译、部署; 3.系统中,有些模块是CPU密集型,有些模块是I/O密…...
小目标检测(1)——大恒(DaHeng)相机操作与控制编程
文章目录 引言正文相关开发库的介绍编程准备配置引用头文件GalaxyIncludes.h配置lib文件 具体编程过程初始化和反初始化枚举设备开关设备 属性控制属性控制器种类 图像采集控制和图像处理采单帧回调采集图像处理流对象属性控制 获取设备事件获取掉线事件通知 样例程序分析补充&…...
异步实现邮件发送
目录 问题描述: 问题分析: 问题解决: 分析总结: 问题描述: 在写接口的时候,遇到一个问题,前端要求直接返回结果再去运行其他代码。 问题分析: 因为经费紧张,本次使用…...
【Redis】内存数据库Redis进阶(Redis分片集群)
目录 分布式缓存 Redis 四大问题搭建Redis分片集群分片原理散列插槽(插槽原理)集群伸缩需求设定配置集群伸缩 故障转移自动故障转移手动故障转移 RedisTemplate访问分片集群 分布式缓存 Redis 四大问题 基于 Redis 集群解决单机 Redis 存在的四大问题&a…...
替代LT8711龙讯替代RTD2172 CS5265中文规格书4K60HZ转接线 设计Type-C转HDMI2.0高清投屏方案
龙迅LT8711是一款Type-C/DP1.2 to HDMI2.0方案芯片,北京集睿致远(ASL)推出的CS5265可以完全代替LT8711UX,封装尺寸比LT8711UX小的同时,CS5265的芯片集成度高,内置MCU,内置lLDO等,CS5…...
HCIA-datacom数通题库和录播视频资料
HCIA-Datacom,是华为数通认证的初级考试,培训与认证具备数通基础通用知识和技能水平的工程师,只是入门了解数通的一些基础通用知识,适用于小白了解和学习数通知识点起点。 个人建议还是有必要考的,如果在企业考试考试…...
优思学院|质量工程师应具备什么能力?
质量工程师是一个需要耐心、细心、坚持态度、沟通能力、协调能力的工作,更需要持续学习强化自身的专业知识。 质量工程师负责审核、客户投诉的调查、过程的改进以达到质量之提升,他們也必须要预警生产线风险、质量异常,并且协调不同的部門一…...
数据分析 VS 数据可视化:决战时刻
数据分析和数据可视化是数据科学领域中两个重要的组成部分,很多人不明白两者之间的关系,会误认为是一个东西,其实不然。本文就带大家简单了解一下它们的区别与联系吧! 数据分析是指通过收集、处理和解释数据来获取有关特定问题或…...
Vue3中无法为el-tree-select设置反选问题分析
环境:Vue3.2、Element Plus 问题:子组件 setting.vue > 弹窗组件 Dialog > 树选择组件el-tree-select ,无法设置默认选中项 default-checked-keys 场景:在一个后台系统的列表页,选中一行数据,点击设置…...
Redis - 缓存持久化
Redis 的缓存持久化有两种技术 : RDB 和 AOF RDB Redis 的数据快照 简单说就是将缓存中的所有数据都记录到磁盘中,当Redis发生故障的时候,只需读取快照文件,就可恢复数据 相应的命令是 save 和 bgsave ,这两个命名…...
Pandas进阶修炼120题-第三期(金融数据处理,51-80题)
目录 往期内容:第一期:Pandas基础(1-20题)第二期:Pandas数据处理(21-50题) 第三期 金融数据处理51.使用绝对路径读取本地Excel数据方法一:双反斜杠绝对路径方法二:r 拓展…...
3、HAproxy高级配置
基于cookie的会话保持 在 HAProxy 中,可以通过使用 cookie 配置来实现基于 Cookie 的会话保持。cookie 配置用于配置与会话保持相关的选项,允许您定义要在HTTP响应中插入或重写的Cookie以及其他与Cookie会话保持相关的参数。 以下是一些常用的 cookie 配…...
tcpdump网络抓包工具的使用
tcpdump 是一款用在linux系统上的网络抓包工具 1、 基本语法 tcpdump 的常用参数如下: tcpdump -i eth0 -nn -s0 -v port 80-i : 选择要捕获的接口,通常是以太网卡或无线网卡,也可以是 vlan 或其他特殊接口。如果该系统上只有一个网络接口&…...
AMEYA360旗下品牌:日本SUSUMU推出RGV系列贴片电阻器新产品
电动汽车、机器人、精密测量仪器——在上述三例应用领域中,具有高精度、坚固性和长期稳定性的组件是必不可少的。对于这些和类似的应用,RGV系列精密电阻器是理想的选择。 RGV系列电阻器 RGV系列金属薄膜贴片电阻器的电阻值范围为120kΩ至3MΩ(…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
如何配置一个sql server使得其它用户可以通过excel odbc获取数据
要让其他用户通过 Excel 使用 ODBC 连接到 SQL Server 获取数据,你需要完成以下配置步骤: ✅ 一、在 SQL Server 端配置(服务器设置) 1. 启用 TCP/IP 协议 打开 “SQL Server 配置管理器”。导航到:SQL Server 网络配…...
在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7
在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤: 第一步: 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为: // 改为 v…...
