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