失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 基于百度翻译API和python的批量地名翻译的实现

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

时间:2021-10-20 17:06:52

相关推荐

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

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

百度API

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

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

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

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

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

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

python代码

import psycopg2import hashlibimport psycopg2.extrasimport randomimport jsonimport requestsimport timeconn = 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./api/trans/vip/translate?from=zh&to=en&appid=0816000327052&q=" + cnappid = "自己的百度翻译appid"secret = "自己的百度翻译secret"# 随机数salt = str(random.randint(5000, 10000))data = appid + cn + salt + secretmm = hashlib.md5(data.encode(encoding='UTF-8')).hexdigest()# md5加密url = url + "&salt=" + salt + "&sign=" + mmresponse = 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) # 避免频繁调用百度翻译失败,账号有迸发限制mit()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)mit()print(cursor.rowcount)cursor.close()conn.close()

翻译结果

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

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

如果觉得《基于百度翻译API和python的批量地名翻译的实现》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。