日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 英语翻译 excel_Excel自动翻译

發(fā)布時間:2023/12/2 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 英语翻译 excel_Excel自动翻译 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

有朋友問有沒有Excel公式可以自動翻譯公式中的文本。

找了幾個帖子,是用VBA請求翻譯網(wǎng)站的API,返回結(jié)果。嘗試做了一下,發(fā)現(xiàn)行不通。這是很久以前的帖子,其中使用的API都廢棄了,現(xiàn)在升級為SDK了。要想實現(xiàn)同樣的功能得寫一些邏輯。平時不怎么用Excel,不確定VBA是否能使用現(xiàn)在的SDK,所以選擇了自己熟悉的Python。

下面是Python的安裝包下載鏈接:

Python2 Windows 64位下載

Python2 Windows 32位下載

Python有兩個不同的版本,Python2和Python3,這里安裝的是Python2。當(dāng)下人工智能火熱,計算機等級考試也添加了這門語言,有省份的Python小學(xué)教材都出了。相信大家應(yīng)該對這個語言也不陌生。

安裝教程:

廖雪峰 Python安裝

安裝選項中的pip和Add python.exe to Path是要選上的。其他的請參考教程。

安裝完成后,需要安裝幾個依賴包。步驟:

Windows + R 打開運行窗口。

輸入cmd,回車 打開命令行。

輸入pip install xlrd,回車 等待結(jié)束。

輸入pip install XlsxWriter,回車 等待結(jié)束。

安裝結(jié)果是英文顯示,如果看到Success之類的單詞代表安裝成功。看到紅色顯示的單詞或者failed代表失敗。

找了幾個知名翻譯網(wǎng)站,大部分都收費,但有些限定單詞數(shù)量內(nèi)免費。最終,我選的是百度翻譯。每月免費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'測試-結(jié)果.xlsx' # 輸出文件

SHEET_NAME = u'測試' # 頁名

START_CELL = 'C5' # 開始格子

END_CELL = 'D19' # 結(jié)束格子

SRC_LAN = 'jp' # 源語言

DST_LAN = 'zh' # 目標(biāo)語言

# ============ ~只改這里 ====================

@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()

復(fù)制這段代碼到文本文件中,命名為translate.py,保存文件為UTF-8格式。或者從這里下載這個文件。高大上的程序員使用這個:

文件中“只改這里”標(biāo)記內(nèi)為要修改的內(nèi)容。APP ID和密鑰可以在你的百度翻譯開放平臺-管理控制臺的最下面查看。直接替換‘你的APP ID’和‘你的密鑰’就行。下面的依次為你要翻譯的Excel文件名,輸出文件名,頁簽名,開始格子名,結(jié)束格子名,源語言,目標(biāo)語言。開始格子名和結(jié)束格子名標(biāo)識翻譯內(nèi)容的格子范圍,語言列表列在下面:

語言簡寫

名稱

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。等待彈出的黑窗口退出,翻譯結(jié)果保存在你指定的輸出文件中。

總結(jié)

以上是生活随笔為你收集整理的python 英语翻译 excel_Excel自动翻译的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。