0
点赞
收藏
分享

微信扫一扫

基于百度翻译API和python的批量地名翻译的实现


这次接到一个需求,需要把postgresql数据库中批量的地名进行翻译,大约200多个,自己翻译也非常的慢。于是想到用百度翻译的API对数据库的数据逐条进行翻译。正好也在学习Python语言,正好可以用Python对数据库的内容进行朱行翻译。数据如下所示:

基于百度翻译API和python的批量地名翻译的实现_Python

百度API

标准版:提供基础文本翻译服务,QPS(每秒并发请求量)=1,个人或企业用户均可申请使用

高级版:提供基础文本翻译服务,同时可申请自定义词表功能(敬请期待),QPS=10,供个人认证用户申请使用

尊享版:提供基础文本翻译服务,同时可申请词典、语音合成、自定义词表功能,QPS=100,供企业认证用户申请使用

标准版:免费使用,不限使用字符量

高级版、尊享版:每月翻译字符数低于200万,享免费服务;超过200万字符,按照49元/百万字符支付当月超出部分字符量费用

为了速度快一点,我这里选择的是高级版,毕竟数据不是非常多。

python代码

import psycopg2
import hashlib
import psycopg2.extras
import random
import json
import requests
import time

conn = psycopg2.connect(database="bike", user="postgres", password="postgres", host="localhost", port="5432")
cursor = conn.cursor()
print("Opened database successfully")


def translate(cn):
    url = "http://api.fanyi.baidu.com/api/trans/vip/translate?from=zh&to=en&appid=20190816000327052&q=" + cn
    appid = "自己的百度翻译appid"
    secret = "自己的百度翻译secret"
    # 随机数
    salt = str(random.randint(5000, 10000))
    data = appid + cn + salt + secret
    mm = hashlib.md5(data.encode(encoding='UTF-8')).hexdigest()
    # md5加密
    url = url + "&salt=" + salt + "&sign=" + mm
    response = requests.get(url)
    print(response.text)
    data = json.loads(response.text)
    return data["trans_result"][0]["dst"]


save_data = []
sql_select = "select gid,street from shanghai1"
cursor.execute(sql_select)
rows = cursor.fetchall()

for row in rows:
    result =translate(row[1]).replace("'","")
    save_data.append({"gid": str(row[0]), "name": result})
    time.sleep(0.2)  # 避免频繁调用百度翻译失败,账号有迸发限制

conn.commit()
cursor.close()
conn.close()

conn = psycopg2.connect(database="bike", user="postgres", password="postgres", host="localhost", port="5432")
cursor = conn.cursor()

for item in save_data:
    sql_update = "update shanghai1 set name = '"+item["name"]+"' where gid ="+item["gid"]+";"

    print(sql_update)
    cursor.execute(sql_update)
    print(cursor.rowcount)

conn.commit()
print(cursor.rowcount)
cursor.close()
conn.close()

翻译结果

运行前面的python代码,最终的翻译结果如下图所示

基于百度翻译API和python的批量地名翻译的实现_postgresql_02

感觉这个小功能还是非常有用的,和大家分享一下 

举报

相关推荐

0 条评论