python 英语翻译 excel_Excel自动翻译
有朋友問有沒有Excel公式可以自動翻譯公式中的文本。
找了幾個帖子,是用VBA請求翻譯網站的API,返回結果。嘗試做了一下,發現行不通。這是很久以前的帖子,其中使用的API都廢棄了,現在升級為SDK了。要想實現同樣的功能得寫一些邏輯。平時不怎么用Excel,不確定VBA是否能使用現在的SDK,所以選擇了自己熟悉的Python。
下面是Python的安裝包下載鏈接:
Python2 Windows 64位下載
Python2 Windows 32位下載
Python有兩個不同的版本,Python2和Python3,這里安裝的是Python2。當下人工智能火熱,計算機等級考試也添加了這門語言,有省份的Python小學教材都出了。相信大家應該對這個語言也不陌生。
安裝教程:
廖雪峰 Python安裝
安裝選項中的pip和Add python.exe to Path是要選上的。其他的請參考教程。
安裝完成后,需要安裝幾個依賴包。步驟:
Windows + R 打開運行窗口。
輸入cmd,回車 打開命令行。
輸入pip install xlrd,回車 等待結束。
輸入pip install XlsxWriter,回車 等待結束。
安裝結果是英文顯示,如果看到Success之類的單詞代表安裝成功。看到紅色顯示的單詞或者failed代表失敗。
找了幾個知名翻譯網站,大部分都收費,但有些限定單詞數量內免費。最終,我選的是百度翻譯。每月免費200萬字符,一般夠用。只是需要注冊一個百度翻譯開放平臺賬號。注冊過程略過。
下面是功能代碼:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function
import math
import re
import sys
import os
import httplib
import md5
import urllib
import random
import json
import xlrd
import xlsxwriter
class Boot(object):
# ============ 只改這里 ====================
APPID = '你的APP ID'
SECRET_KEY = '你的密鑰'
FILE_NAME = u'測試.xlsx' # Excel文件名
NEW_FILE_NAME = u'測試-結果.xlsx' # 輸出文件
SHEET_NAME = u'測試' # 頁名
START_CELL = 'C5' # 開始格子
END_CELL = 'D19' # 結束格子
SRC_LAN = 'jp' # 源語言
DST_LAN = 'zh' # 目標語言
# ============ ~只改這里 ====================
@classmethod
def row_name_2_real_name(cls, row_name):
row_name = row_name.lower()
result = 0
for ch in row_name:
result = result * 26 + (ord(ch) - 96)
return int(result + 0.5)
@classmethod
def view_nam_2_real_name(cls, view_name):
mat = re.match(r'([a-zA-Z]+)(\d+)', view_name)
if not mat:
cls.printu(u'格子號不對!')
sys.exit(1)
row = int(mat.group(2))
column = cls.row_name_2_real_name(mat.group(1))
return (row - 1, column - 1)
@classmethod
def get_cell_value(cls, work_sheet, row, column, tp):
return tp(work_sheet.cell(row, column).value)
@classmethod
def printu(cls, u_text):
if sys.platform == 'win32':
print(u_text.encode('gbk'))
else:
print(u_text.encode('utf-8'))
@classmethod
def translate(cls, src_text):
result = u'【翻譯失敗】'
salt = random.randint(32768, 65536)
sign = '%s%s%s%s' % (
cls.APPID,
src_text,
salt,
cls.SECRET_KEY
)
m1 = md5.new()
m1.update(sign)
sign = m1.hexdigest()
translate_url = '/api/trans/vip/translate?appid=%s&q=%s&from=%s&to=%s&salt=%s&sign=%s' % (
cls.APPID,
src_text,
cls.SRC_LAN,
cls.DST_LAN,
salt,
sign
)
httpClient = None
try:
httpClient = httplib.HTTPConnection('api.fanyi.baidu.com')
httpClient.request('GET', translate_url)
response = httpClient.getresponse()
ret = json.loads(response.read(), 'utf-8')
if ret and ret['trans_result'] and len(ret['trans_result']) > 0:
result = ret['trans_result'][0]['dst']
except Exception, e:
cls.printu(u"ERROR: 翻譯%s失敗:%s" % (src_text, e))
finally:
if httpClient:
httpClient.close()
return result
@classmethod
def boot(cls):
excel_file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), cls.FILE_NAME)
work_book = xlrd.open_workbook(excel_file_path)
work_sheet = work_book.sheet_by_name(cls.SHEET_NAME)
start_row, start_column = cls.view_nam_2_real_name(cls.START_CELL)
end_row, end_column = cls.view_nam_2_real_name(cls.END_CELL)
collector = []
for i in xrange(start_column, end_column + 1):
for j in xrange(start_row, end_row + 1):
src_text = cls.get_cell_value(work_sheet, j, i, unicode)
cls.printu(u"翻譯:%s" % src_text)
src_text = src_text.encode('utf-8')
dst_text = cls.translate(src_text)
collector.append(dst_text)
work_book = xlsxwriter.Workbook(os.path.join(os.path.dirname(os.path.abspath(__file__)), cls.NEW_FILE_NAME))
work_sheet = work_book.add_worksheet()
for idx, data in enumerate(collector):
work_sheet.write(idx, 0, data)
work_book.close()
if __name__ == '__main__':
Boot.boot()
復制這段代碼到文本文件中,命名為translate.py,保存文件為UTF-8格式。或者從這里下載這個文件。高大上的程序員使用這個:
文件中“只改這里”標記內為要修改的內容。APP ID和密鑰可以在你的百度翻譯開放平臺-管理控制臺的最下面查看。直接替換‘你的APP ID’和‘你的密鑰’就行。下面的依次為你要翻譯的Excel文件名,輸出文件名,頁簽名,開始格子名,結束格子名,源語言,目標語言。開始格子名和結束格子名標識翻譯內容的格子范圍,語言列表列在下面:
語言簡寫
名稱
auto
自動檢測
zh
中文
en
英語
yue
粵語
wyw
文言文
jp
日語
kor
韓語
fra
法語
spa
西班牙語
th
泰語
ara
阿拉伯語
ru
俄語
pt
葡萄牙語
de
德語
it
意大利語
el
希臘語
nl
荷蘭語
pl
波蘭語
bul
保加利亞語
est
愛沙尼亞語
dan
丹麥語
fin
芬蘭語
cs
捷克語
rom
羅馬尼亞語
slo
斯洛文尼亞語
swe
瑞典語
hu
匈牙利語
cht
繁體中文
vie
越南語
修改,保存完畢后,直接雙擊運行translate.py。等待彈出的黑窗口退出,翻譯結果保存在你指定的輸出文件中。
總結
以上是生活随笔為你收集整理的python 英语翻译 excel_Excel自动翻译的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: office 2016安装包
- 下一篇: 计算机Excel运行环境,Excel S