需求
需要批量将中文转化为英文,我想到使用python的方法,翻译的库有很多,考虑到使用谷歌的api需要翻墙,我就使用了百度的翻译api
百度翻译的产品服务
百度提供了大概200多种的语言的翻译的功能,开发者每个月都有一定量的免费使用定额,这里我使用了通用的API
百度翻译开放平台百度翻译开放平台提供通用文本翻译API、垂直领域翻译API、文档翻译API、图片翻译API及语音翻译API产品,并提供定制化、私有化服务,全面满足开发者的翻译需求。https://fanyi-api.baidu.com/product/11除此之外还有蛮多的功能,可以使用
服务的开通
进入百度开发翻译的开发者网站,选择要开通的服务
服务开通后,我们可以获得每个服务的APP ID和密钥
代码
因为是免费版本,所有我将速度限定为每秒请求一次,请求太快会报错
from translate import Translator
import pandas as pd
import requests
import json
import hashlib
url = 'https://fanyi-api.baidu.com/api/trans/vip/translate'
app_id = '' # 将 your_app_id 替换为自己的应用ID
secret_key = '' # 将 your_secret_key 替换为自己的密钥
import os
import time
import cx_Oracle
data = pd.read_csv("a.csv",encoding='utf-8')
# 创建一个OpenCC对象,并选择转换规则为'zht2en.json',即将繁体中文转换为英文。
tableName="xxx_test"
myset = set()
#print(data.columns)
i=1
for col in data.columns:
salt = '1234567890' # 用于生成随机数的干扰因子
sign = app_id + col + salt + secret_key
sign = hashlib.md5(sign.encode()).hexdigest()
#构造请求
params = {
'q': col,
'from': 'cht',
'to': 'en',
'appid': app_id,
'salt': salt,
'sign': sign
}
response = requests.get(url, params=params)
result = json.loads(response.text)['trans_result'][0]['dst']
time.sleep(1)
result = result.replace(" ","_")
data = result.split("_")
result=result[:20]
if result in myset:
result=result+str(i)
i=i+1
myset.add(result)
# with open("data.txt",'a',encoding="utf-8") as file:
# file.writelines(sql+"\n")