更新時(shí)間:2024-08-22 21:58:24作者:佚名
運(yùn)營過程中不斷遇到的新問題好東西的英文,理念轉(zhuǎn)變過程的背景
今天接到一個(gè)任務(wù),是把一個(gè)EXCEL文件中的中文翻譯成英文,由于表格很大,想到如果手動(dòng)翻譯的話,三天都沒事做,所以決定把這個(gè)翻譯出來。
于是就有了用python進(jìn)行批量翻譯的想法
目前的想法是把Excel中每個(gè)單元格的內(nèi)容取出來,放到一個(gè)列表里,用翻譯軟件翻譯,然后批量保存到一個(gè)新的表格里(應(yīng)該可以用API接口把所有單元格內(nèi)容按順序取出、翻譯、保存,不過這個(gè)我還沒學(xué)過。。。)
參考文章:
第一天運(yùn)營流程
1. 發(fā)現(xiàn)一個(gè)問題,Google 翻譯有字符限制……每次最多 5000 個(gè)字符
于是就想著分幾步粘貼,差不多有兩萬多個(gè)表格需要翻譯,多做幾次就好了。
OK,終于翻譯完了,開始運(yùn)行吧
新問題又來了,Google 在翻譯一大段字符的時(shí)候,把一些引號(hào) '' 吞掉了,導(dǎo)致列表中間的元素亂了。這個(gè)挺麻煩的,一開始我嘗試手動(dòng)修改,把吞掉的引號(hào)補(bǔ)上,手動(dòng)操作了 5 分鐘后就放棄了,這太慘了。就在我準(zhǔn)備砸電腦放棄的時(shí)候,突然靈光一閃,想到用正則表達(dá)式來批量計(jì)算。別太聰明了。
import pandas as pd
path = r'C:UsershaoDesktop批量翻譯源文件兩廣-住宅調(diào)研問卷.xlsx'
df = pd.read_excel(path, header=None)
contents = []
for i in range(len(df[0])):
for j in range(len(df.iloc[0])):
content = df.iloc[i,j]
print('第{}行第{}列元素:%s'.format(i, j)%content)
contents.append(content)
print('行和列的長度:%d,%d'%(len(df[0]), len(df.iloc[0])))
print(contents)
第 2 天 正則表達(dá)式是個(gè)好東西
首先導(dǎo)入所有翻譯的數(shù)據(jù)
在編譯器提示中,可以清楚的看到錯(cuò)誤發(fā)生的位置(白色表示錯(cuò)誤)。英文中所有格's帶引號(hào),與列表中的引號(hào)沖突。于是想到用正則表達(dá)式將其他引號(hào)改為雙引號(hào)。
然后我把開頭和結(jié)尾的單引號(hào)都改成雙引號(hào),但是還是提示錯(cuò)誤。。。。我發(fā)現(xiàn)是因?yàn)閿?shù)字不是字符串,沒有引號(hào),所以正則表達(dá)式匹配不到。于是又回去修改代碼,給int和float類型加上引號(hào),然后再次運(yùn)行,發(fā)現(xiàn)還是有錯(cuò)誤,中間有些空白符被吞掉了網(wǎng)校頭條,導(dǎo)致整個(gè)順序不一致,導(dǎo)入到表中就出現(xiàn)了錯(cuò)位。。。。最后我放棄用正則表達(dá)式修改了。。。
第 3 天
既然批量提取翻譯再批量導(dǎo)入的方法不行好東西的英文,只能試試之前想到的API,提取一個(gè),翻譯一個(gè),這樣就不會(huì)錯(cuò)位了,我馬上就照做了,在百度上找到了一個(gè)方法,代碼如下
#利用translate模塊,但有兩個(gè)缺點(diǎn),一個(gè)是限制翻譯數(shù)量,每天就能翻譯1000個(gè)詞
#再一個(gè)是只能由英文翻譯成中文,比較瓜
import pandas as pd
from translate import Translator
path = r'C:UsershaoDesktop批量翻譯源文件test_db1.xlsx'
df = pd.read_excel(path, header=None)
#content_1, content_2, content_2, content_2,
for i in range(len(df