python 翻译模块 翻译API使用(百度、有道、谷歌)

2023-10-27

1、翻译模块、api使用分析

1、translate库:使用简单,但是有次数限制,翻译的准确性中等;
2、百度api(推荐使用): 代码简单,有模块,但是需要注册,获取key值,翻译的准确性中下;
3、chrome翻译api:代码复杂,次数限制, 但是翻译的准确性较高;
4、有道翻译:代码复杂,次数限制,准确性中等;

2、使用方式:

  1. translate库:
from translate import Translator
#在任何两种语言之间,中文翻译成英文
translator=Translator(from_lang="chinese",to_lang="english")
translation = translator.translate("床前明月光,疑是地上霜;举头望明月,低头思故乡")
print(translation)

2、 百度api:
需要先去百度翻译进行注册,获取appid、secretkey值,记得填写可访问的服务器ip

# 百度通用翻译API,不包含词典、tts语音合成等资源,如有相关需求请联系translate_api@baidu.com
# coding=utf-8

import http.client
import hashlib
import urllib
import random
import json

def trans_lang(q):
    trans_result = q
    # 百度appid和密钥需要通过注册百度【翻译开放平台】账号后获得
    appid = 'xxx'  # 填写你的appid
    secretKey = 'xxx'  # 填写你的密钥

    httpClient = None
    myurl = '/api/trans/vip/translate'  # 通用翻译API HTTP地址

    fromLang = 'en'  # 原文语种
    toLang = 'zh'  # 译文语种
    salt = random.randint(32768, 65536)
    # 手动录入翻译内容,q存放
    sign = appid + q + str(salt) + secretKey
    sign = hashlib.md5(sign.encode()).hexdigest()
    myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(q) + '&from=' + fromLang + \
            '&to=' + toLang + '&salt=' + str(salt) + '&sign=' + sign

    # 建立会话,返回结果
    try:
        httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
        httpClient.request('GET', myurl)
        # response是HTTPResponse对象
        response = httpClient.getresponse()
        result_all = response.read().decode("utf-8")
        result = json.loads(result_all)
        trans_result = result['trans_result'][0]['dst']
    except Exception as e:
        print(e)
    finally:
        if httpClient:
            httpClient.close()
    return trans_result


if __name__ == '__main__':
    a = 'Customer Not Available & Mobile not reachable Customer Not Available & Mobile not reachable by SR: ANIL KUMAR (170435) (117510), MobileNo: 9996366909'
    print(trans_lang(a))

3、chrome翻译api:

import requests
import re
import json
import time
class GoogleTranslator ():
    _host = 'translate.google.cn'
    _headers = {
        'Host': _host,
        'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Mobile Safari/537.36',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
        'Accept-Encoding': 'gzip, deflate, br',
        'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
        'Referer': 'https://' + _host,
        'Connection': 'keep-alive',
        'Cache-Control': 'max-age=0'
    }
    _language = {
        'afrikaans': 'af',
        'arabic': 'ar',
        'belarusian': 'be',
        'bulgarian': 'bg',
        'catalan': 'ca',
        'czech': 'cs',
        'welsh': 'cy',
        'danish': 'da',
        'german': 'de',
        'greek': 'el',
        'english': 'en',
        'esperanto': 'eo',
        'spanish': 'es',
        'estonian': 'et',
        'persian': 'fa',
        'finnish': 'fi',
        'french': 'fr',
        'irish': 'ga',
        'galician': 'gl',
        'hindi': 'hi',
        'croatian': 'hr',
        'hungarian': 'hu',
        'indonesian': 'id',
        'icelandic': 'is',
        'italian': 'it',
        'hebrew': 'iw',
        'japanese': 'ja',
        'korean': 'ko',
        'latin': 'la',
        'lithuanian': 'lt',
        'latvian': 'lv',
        'macedonian': 'mk',
        'malay': 'ms',
        'maltese': 'mt',
        'dutch': 'nl',
        'norwegian': 'no',
        'polish': 'pl',
        'portuguese': 'pt',
        'romanian': 'ro',
        'russian': 'ru',
        'slovak': 'sk',
        'slovenian': 'sl',
        'albanian': 'sq',
        'serbian': 'sr',
        'swedish': 'sv',
        'swahili': 'sw',
        'thai': 'th',
        'filipino': 'tl',
        'turkish': 'tr',
        'ukrainian': 'uk',
        'vietnamese': 'vi',
        'yiddish': 'yi',
        'chinese_simplified': 'zh-CN',
        'chinese_traditional': 'zh-TW',
        'auto': 'auto'
    }
    _url = 'https://' + _host + '/translate_a/single'
    _params = {
            'client': 'webapp',
            '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',
            'otf': '1',
            'ssel': '0',
            'tsel': '0',
            'kc': '1'
    }
    __cookies = None
    __googleTokenKey = '376032.257956'
    __googleTokenKeyUpdataTime = 600.0
    __googleTokenKeyRetireTime = time.time() + 600.0
    def __init__(self, src = 'en', dest = 'zh-CN', tkkUpdataTime = 600.0):
        if src not in self._language and src not in self._language.values():
            src = 'auto'
        if dest not in self._language and dest not in self._language.values():
            dest = 'auto'
        self._params['sl'] = src
        self._params['tl'] = dest
        self.googleTokenKeyUpdataTime = tkkUpdataTime
        self.__updateGoogleTokenKey()
    def __updateGoogleTokenKey(self):
        self.__googleTokenKey = self.__getGoogleTokenKey()
        self.__googleTokenKeyRetireTime = time.time() + self.__googleTokenKeyUpdataTime
    def __getGoogleTokenKey(self):
        """Get the Google TKK from https://translate.google.cn"""
        # TKK example: '435075.3634891900'
        result = ''
        try:
            res = requests.get('https://' + self._host, timeout = 3)
            res.raise_for_status()
            self.__cookies = res.cookies
            result = re.search(r'tkk\:\'(\d+\.\d+)?\'', res.text).group(1)
        except requests.exceptions.ReadTimeout as ex:
            print('ERROR: ' + str(ex))
            time.sleep(1)
        return result
    def __getGoogleToken(self, a, TKK):
        """Calculate Google tk from TKK """
        # https://www.cnblogs.com/chicsky/p/7443830.html
        # if text = 'Tablet Developer' and TKK = '435102.3120524463', then tk = '315066.159012'
        def RL(a, b):
            for d in range(0, len(b)-2, 3):
                c = b[d + 2]
                c = ord(c[0]) - 87 if 'a' <= c else int(c)
                c = a >> c if '+' == b[d + 1] else a << c
                a = a + c & 4294967295 if '+' == b[d] else a ^ c
            return a
        g = []
        f = 0
        while f < len(a):
            c = ord(a[f])
            if 128 > c:
                g.append(c)
            else:
                if 2048 > c:
                    g.append((c >> 6) | 192)
                else:
                    if (55296 == (c & 64512)) and (f + 1 < len(a)) and (56320 == (ord(a[f+1]) & 64512)):
                        f += 1
                        c = 65536 + ((c & 1023) << 10) + (ord(a[f]) & 1023)
                        g.append((c >> 18) | 240)
                        g.append((c >> 12) & 63 | 128)
                    else:
                        g.append((c >> 12) | 224)
                        g.append((c >> 6) & 63 | 128)
                g.append((c & 63) | 128)
            f += 1
        e = TKK.split('.')
        h = int(e[0]) or 0
        t = h
        for item in g:
            t += item
            t = RL(t, '+-a^+6')
        t = RL(t, '+-3^+b+-f')
        t ^= int(e[1]) or 0
        if 0 > t:
            t = (t & 2147483647) + 2147483648
        result = t % 1000000
        return str(result) + '.' + str(result ^ h)
    def translate(self, text):
        if time.time() > self.__googleTokenKeyRetireTime:
            self.__updateGoogleTokenKey()
        data = {'q': text}
        self._params['tk'] = self.__getGoogleToken(text, self.__googleTokenKey)
        result = ''
        try:
            res = requests.post(self._url,
                            headers = self._headers,
                            cookies = self.__cookies,
                            data = data,
                            params = self._params,
                            timeout = 6)
            res.raise_for_status()
            jsonText = res.text
            if len(jsonText)>0:
                jsonResult = json.loads(jsonText)
                if len(jsonResult[0])>0:
                    for item in jsonResult[0]:
                        result += item[0]
            return result
        except Exception as ex:
            print('ERROR: ' + str(ex))
            return ''
import time
from GoogleTranslator import GoogleTranslator
def readFile(fileName):
    with open(fileName, 'r') as f:
        paragraph = ''
        for line in f:
            if line[0]!='\n':
                paragraph += line.strip('\n')
            else:
                if len(paragraph)>0:
                    yield paragraph
                    paragraph = ''
        if len(paragraph)>0:
            yield paragraph

4、有道翻译api:

from urllib import request, parse
import json
from faker import Faker

class trans(object):
    def __init__(self):
        self.url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'

    def tran(self, text):
        index = text.find("http")
        text = text[:index]
        text = text.replace('\n', '').replace('#', '').replace('RT ', '').replace(':', '')
        ua = Faker().user_agent()
        headers = {
            'User-Agent': ua,
            'Host': 'fanyi.youdao.com',
            'Origin': 'http://fanyi.youdao.com',
            'Referer': 'http://fanyi.youdao.com/',

        }
        # 表单数据
        from_data = {
            'i': text,
            'from': 'UTO',
            'to': 'UTO',
            'smartresult': 'dict',
            'client': 'fanyideskweb',
            'doctype': 'json',
            'version': '2.1',
            'keyfrom': 'fanyi.web',
            'action': 'FY_BY_REALTlME'
        }
        from_data = parse.urlencode(from_data).encode('utf-8')
        req = request.Request(self.url, from_data, headers)
        res = request.urlopen(req).read().decode("utf-8")
        target = json.loads(res)
        try:
            result = target['translateResult'][0][0]['tgt']
        except:
            result = "Translate failed"
        return result

if __name__ == '__main__':
    Obj = trans()
    for i in range(1000):
        print(i)
        text = "Egypt disinfecting streets in Cairo to combat the spread of Coronavirus.\n#COVID19Africa #CoronavirusPandemic\n https://t…"
        res = Obj.tran(text)
        print(res)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 翻译模块 翻译API使用(百度、有道、谷歌) 的相关文章

  • 类型错误:object.__new__(int) 不安全,请使用 int.__new__()

    阅读本文时 Python 中的元类是什么 https stackoverflow com questions 100003 what is a metaclass in python 我正在学习使用 new 使用以下代码片段 class a
  • 在 Python 中搜索文本文件并打印相关行?

    如何在文本文件中搜索关键短语或关键字 然后打印关键短语或关键字所在的行 searchfile open file txt r for line in searchfile if searchphrase in line print line
  • Tensorflow 导入错误:没有名为“tensorflow”的模块

    我在 Windows Python 3 5 Anaconda 环境中安装了 TensorFlow 验证成功 有警告 tensorflow C gt python Python 3 5 3 英特尔公司 默认 2017 年 4 月 27 日 1
  • 有没有办法拥有租户特定的 JWT 令牌

    我目前正在开发一个 SPA 应用程序 角度 后端使用 Python Flask API 该应用程序将支持多个租户 我对安全概念有点挣扎 我目前正在使用 jwt extend 颁发的 JWT 令牌对所有租户都有效 我当然可以从令牌中获取用户
  • Python 中的自然日/相对日

    我想要一种在 Python 中显示日期项目的自然时间的方法 类似于 Twitter 将显示 刚才 几分钟前 两小时前 三天前 等消息 Django 1 0 在 django contrib 中有一个 人性化 方法 我没有使用 Django
  • 为什么 Python 中的无分支函数和内置函数速度较慢?

    我发现了 2 个无分支函数 它们可以在 python 中查找两个数字的最大值 并将它们与 if 语句和内置 max 函数进行比较 我认为无分支或内置函数将是最快的 但最快的是 if 语句函数 有人知道这是为什么吗 以下是功能 If 语句 2
  • Python 2.7从非默认目录打开多个文件(对于opencv)

    我在 64 位 win7 上使用 python 2 7 并拥有 opencv 2 4 x 当我写 cv2 imread pic 时 它会在我的默认 python 路径中打开 pic 即C Users Myname 但是我如何设法浏览不同的目
  • Pandas系列矢量化文本处理

    我想使用矢量化操作改进我的 Pandas 代码 假设我有一个简单的 DataFrame 其中有一个文本列 其中可能包含 url Column1 0 hello http www google com 1 bye www mail com w
  • 如何获取一个类的所有实例

    我是一名初学者 正在学习 Python 我想创建一个课程Person 在构造函数中 我想将我创建的每个实例放入一个名为 实例 的集合中 然后我希望实例 方法返回所有实例 我怎样才能做到这一点 class Person Type annota
  • 带剖面的 3D 曲面图

    基本上 我有一个由一组时间序列组成的曲面图 我想在特定高度添加剖面图 以更好地了解一年中值高于所选阈值的时期 由此 其中显示平面但不是剖面 To This 有什么建议吗 使用 alpha 和相机仰角并没有解决问题 平面似乎仍然在人物的前面
  • 使用 ruamel.yaml,如何使带有 NEWLINE 的变量成为不带引号的多行

    我正在生成用作协议的 YAML 其中包含一些生成的 JSON import json from ruamel import yaml jsonsample id 123 type customer account other myyamel
  • 使用字符串迭代 url - python

    我现在完全被我的代码困住了 首先 我尝试从 volkskrant 的存档页面检索所有网址 这是我被打击的第一步 某一特定日期的 url 如下所示 http www volkskrant nl archief detail 01012016
  • Python 请求包含有值的参数和没有值的参数

    我正在为 API 编写一个 Python 包装器 该 API 支持具有值的查询参数 例如param1如下 和查询参数do not有价值观 例如param2如下 即 https example com service param1 value
  • 将多个 csv 文件连接成具有相同标头的单个 csv

    我目前正在使用以下代码导入 6 000 个 csv 文件 带标题 并将它们导出到单个 csv 文件 带单个标题行 import csv files from folder path r data US market merged data
  • Python 结构的 PHP 替代品

    我很高兴在我的 Python 项目中使用 Fabric 进行部署 现在我正在从事一个更大的 PHP 项目 想知道是否有类似 PHP 的 Fabric 之类的东西 唔 为什么这有关系 Fabric 只是 python 脚本 所以它与项目语言无
  • Keras CNN 回归模型损失低,准确度为 0

    我在 keras 中遇到这个 NN 回归模型的问题 我正在研究一个汽车数据集 以根据 13 个维度预测价格 简而言之 我已将其读取为 pandas 数据帧 将数值转换为浮点数 缩放值 然后对分类值使用 one hot 编码 这创建了很多新列
  • 在 Django 中使用 path() 找不到 404

    我刚刚查看 django 并尝试通过视图列出书籍id作为 URL 的参数books urls py 但出现 404 页面未找到错误 当我在浏览器中输入此网址时 我没有发现网址有什么问题 http 192 168 0 106 8000 boo
  • 如何导入 boto3 ssm ParameterNotFound 异常?

    我想import the exception当一个boto3 ssm找不到参数get parameter 我正在尝试添加一些额外的内容ssm的功能moto图书馆 但我现在很困惑 gt gt gt import boto3 gt gt gt
  • 如何使用 NLP 确定句子中的中心词?

    例如 如果我得到一个句子 一名英国士兵在阿富汗战斗中丧生 这句话的中心词是 杀 给定 Python 中的 nltk 包 我怎样才能找到它 我不是在谈论词干 我指的是中心词 您正在寻找中心词句子解析 它可以在 Python 的 nltk 包中
  • 如何将 pygame Surface 转换为 PIL 图像?

    我正在使用 PIL 来透视地变换屏幕的一部分 原始图像数据是一个 pygame Surface 需要转换为 PIL 图像 因此我发现了 pygame 的 tostring 函数就是为了这个目的而存在的 然而结果看起来很奇怪 见附图 这段代码

随机推荐

  • 对浏览器内核的理解

    简单来说 浏览器内核是浏览器的核心 也称 渲染引擎 用来解释网页语法并渲染到网页上 浏览器内核决定了浏览器该如何显示网页内容以及页面的格式信息 浏览器内核又可以分成两部分 渲染引擎和JS引擎 渲染引擎 负责获取网页的内容并显示 不同的浏览器
  • git修改commit日志

    由于公司对版本提交日志进行检查 如果不符合要求 则push失败 以下是修改commit日志的方法 1 进入到提交代码文件所在目录 即git所在目录下 cd app repository 2 git log git log commit bf
  • Rabbit MQ详解

    一 什么是RabbitMQ 答 RabbitMQ简称MQ是一套实现了高级消息队列协议的开源消息代理软件 简单来说就是一个消息中间件 是一种程序对程序的通信方法 其服务器也是以高性能 健壮以及可伸缩性出名的Erlang语言编写而成 二 Rab
  • nc文件经度从0-360更改为-180到180,并保存

    从0 360改为 180到180 import xarray as xr rawnc path InPath ds xr open dataset rawnc path lon name lon 你的nc文件中经度的命名 ds longit
  • Python数据分析与机器学习----收入的预测分析

    一 题目 利用age workclass native country等13个特征预测收入是否超过50k 是一个二分类问题 二 训练集 32561个样本 每个样本14个特征 其中6个连续性特征 9个离散型特征 三 测试集 16281个样本
  • Open3D(C++) 四元数奇异值分解

    目录 一 算法原理 1 原理概述 2 实现过程 3 参考文献 二 代码实现 三 结果展示 本文由CSDN点云侠原创 原文链接 如果你不是在点云侠的博客中看到该文章 那么此处便是不要脸的爬虫 一 算法原理 1 原理概述 四元数矩阵的奇异值分解
  • java继承层次结构,在状态模式中实现继承层次结构 - java

    我有一个与此非常相似的设计 这里的NewOrder Registered Granted都有通用方法AddOrderline 和Cancel 因此将这两种方法重构为父类很容易 当我要Cancel一条Shipped行 当前未在图中显示 时 会
  • SegNetr: 重新思考 U 形网络中的局部-全局交互和跳过连接

    SegNetr 会议分析 摘要 贡献 方法 整体框架 1 SegNetr Block 2 Information Retention Skip Connection 实验 1 对比实验 2 消融实验 2 1 Effect of local
  • tslib移植的问题:No raw modules loaded.ts_config:No such file or directory

    1 在开发板上运行校正程序时出现No raw modules loaded 解决方法是把 tslib etc目录下的ts conf 的 module raw input 的注释符号 去掉 但记住不要在前面留有 空格 否则会出现错误Segme
  • python 打开读取文件 出现异常 关闭文件的处理(世界上没有傻问题!但我是个傻子)

    事情梗概 try 尝试读取一个不存在的文件 except Exception as e 打印异常 finally 关闭文件 但是关闭文件时报异常 算了 看代码吧 try f open file name rb file data f rea
  • Vue.js的组件化开发

    组件化开发 什么是组件 web中的组件其实就是页面组成的一部分 好比是电脑中的每一个元件 如硬盘 键盘 鼠标 它是一个具有独立的逻辑和功能或界面 同时又能根据规定的接口规则进行相互融化 变成一个完整的应用 页面就是由一个个类似这样的组成部分
  • iOS开源系列——下拉刷新控件

    EGOTableViewPullRefresh FaceBook开源控件 下拉刷新的鼻祖 SVPullToRefresh 下拉刷新控件 MJRefresh 比较好用的下拉刷新 可以自定义上下拉刷新的文字说明 具体使用看 使用方法 国人写 X
  • 中间件的分类和作用

    要说清这个问题我们用一个生活中的实例来比喻 把分布式系统看作北京市区的交通系统 网络看作市区马路 通过交通工具 汽车 实现通信 每分钟将有几万辆车在马路上行驶 如果没有相应的交通设施和管理规划 北京市将会乱成一团 发生各种交通事故 1 通信
  • java各种报错汇总与分析

    1 没有找到pom文件 需要设置版本号 在这里插入图片描述 https img blog csdnimg cn 20210720112611634 png pic center 解决办法 https blog csdn net SSband
  • 从2023蓝帽杯0解题heapSpary入门堆喷

    从2023蓝帽杯0解题heapSpary入门堆喷 关于堆喷 堆喷射 Heap Spraying 是一种计算机安全攻击技术 它旨在在进程的堆中创建多个包含恶意负载的内存块 这种技术允许攻击者避免需要知道负载确切的内存地址 因为通过广泛地 喷射
  • adb shell 小米手机_【ADB命令实战】免ROOT停用小米手机系统应用

    对于未解锁的手机 总存在那么一些我们用不到 甚至看都不想看到的应用 但是没办法卸载 在这里提供一些禁用掉这些应用的方法供参考 本内容是以小米的MIUI系统为例 其他品牌机型不确保可以成功 毕竟系统应用的包名是不一样的 需要自己去发现 1 打
  • linux-hd.c

    linux kernel hd c C 1991 Linus Torvalds This is the low level hd interrupt support It traverses the request list using i
  • 数据结构与算法课程笔记(二)

    实验二 线性表的顺序存储结构实现 一 实验目的 二 实验内容 一 实验目的 熟悉VC 工程项目的文件组织方式 线性表中数据元素间的关系及其顺序存储结构方式表示方法 顺序表的操作方法与接口函数的设计方法 二 实验内容 1 利用本次实验提供的文
  • element input复合框 修改下拉框样式

    element input复合框 修改下拉框样式 1 项目中经常会遇到修改ui组件库样式的问题 elemetui官网自带样式是这样的 我想修改选中颜色 以及背景颜色 这样设置发现不生效 加上 popper append to body fa
  • python 翻译模块 翻译API使用(百度、有道、谷歌)

    1 翻译模块 api使用分析 1 translate库 使用简单 但是有次数限制 翻译的准确性中等 2 百度api 推荐使用 代码简单 有模块 但是需要注册 获取key值 翻译的准确性中下 3 chrome翻译api 代码复杂 次数限制 但