Python3 调用百度翻译Excel文件

OS: win 7 + python 3.7

适用于翻译多条英文短句。

使用

  1. 下载并安装 Python3.7
  2. 安装引用包
    1. pip install requests & openpyxl
      1. 官网使用的包http.client返回的是整个页面的源码,改为requests lib
      2. request是更友好的python web 类库, 基于urllib3基础上的拓展, 支持Sessions with Cookie等
      3. openpyxl是python操作excel的包
  3. 参数调整
    1. 源码: Git hub repro
  4. 百度翻译官方API文档
  5. 申请翻译API服务
    1. 已登录百度账号的用户,点击“立即使用”,注册成为开发者,即可获得APPID和密钥信息;同一个账户或手机号码仅能申请一组APPID和密钥信息,该APPID和密钥信息可用于多项服务调用。
    2. 请自己申请翻译服务ID并更新密钥. 示例服务欠费已停用

源码

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import hashlib
import random
import openpyxl
from openpyxl import Workbook
import requests

# 使用: 将要翻译的内容放到c:\_Work\source.xlsx的Sheet1的第1列

# set baidu develop parameter
apiurl = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
appid = '201808160001949'
secretKey = 'lWzwUiWmhRORknf68F'

# 翻译内容 源语言 翻译后的语言
def translateBaidu(content, fromLang='en', toLang='zh'):
    salt = str(random.randint(32768, 65536))
    sign = appid + content + salt + secretKey
    sign = hashlib.md5(sign.encode("utf-8")).hexdigest()

    try:
        paramas = {
            'appid': appid,
            'q': content,
            'from': fromLang,
            'to': toLang,
            'salt': salt,
            'sign': sign
        }
        response = requests.get(apiurl, paramas)
        jsonResponse = response.json()  # 获得返回的结果,结果为json格式
        dst = str(jsonResponse["trans_result"]
                  [0]["dst"])  # 取得翻译后的文本结果
        return dst
    except Exception as e:
        print(e)


def excelTrans(srcFilename=r'c:\_Work\source.xlsx', desFilename=r'c:\_Work\result.xlsx',
               srcSheet='Sheet1',  srcColumn=1, srcRowBegin=1, srcRowEnd=28, 
               desColumn=1, desSheet='result1'):
    wb = openpyxl.load_workbook(srcFilename)
    ws = wb[srcSheet]
    wb2 = Workbook()
    ws2 = wb2.create_sheet(title=desSheet)

    for i in range(srcRowBegin, srcRowEnd, 1):
        result = ws.cell(row=i, column=srcColumn).value
        if not (result is None):
            ws2.cell(row=i-srcRowBegin+1,
                     column=desColumn).value = translateBaidu(result)

    wb2.save(desFilename)


if __name__ == '__main__':
    print('translate begin...')
    excelTrans()
    print('ending...')

你可能感兴趣的:(BackEnd,百度翻译,python3,Excel)