因?yàn)樽约呵疤焱鍭rduino時(shí)copy了外國佬的代碼买猖,可以啊改橘,沒好好讀書,英語賊爛(比我入Python坑前好多了)玉控,然后不知道從哪冒出來的想法:我不是會Python么飞主,為毛不寫一個(gè)自動翻譯的腳本。好吧奸远,說這就干吧既棺,可惜直到今天才開始動手,昨天玩Arduino去了懒叛,加上下午寫了一個(gè)網(wǎng)易有道翻譯的爬蟲丸冕,剛好用到我的想法里
我分析下思路吧,其實(shí)也很簡單薛窥,當(dāng)然小白肯定是有點(diǎn)煩躁
1:首先用Python打開文件
2:然后用readlines把讀取的內(nèi)容保存到兩個(gè)變量里胖烛,為啥是兩個(gè),因?yàn)槲易约簽榱吮kU(xiǎn)诅迷,怕在替換的時(shí)候出差錯佩番。。罢杉。
3:把讀取的每行內(nèi)容用re匹配看看是否有“#”這樣的字符趟畏,如果有就用字符串處理方法split("#")來分割成兩部分
4:把注釋傳遞給寫好了的有道翻譯腳本里翻譯-返回結(jié)果,然后替換讀取到的readlines變量
5:保存文件
我先打開一個(gè)文件滩租,然后讀取它
f = open ("test.py", "r")
lines = f.readlines
然后是最核心的代碼赋秀,其實(shí)也很簡單利朵。。猎莲。绍弟。
導(dǎo)入有道翻譯的那個(gè)腳本:
from YouDao import Translate
定義要用到的變量:
num = int()
mid = "#"
然后正式代碼:
for line in lines:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? s = re.findall ("#", line, re.S)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if s == []: pass # 至于為什么不用continue等會就知道了? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? elif:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? head = line.split ("#")[0]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? tail = line.split ("#")[-1] # 得到注釋后的內(nèi)容? ? ? ? ? ? ? ? ? ? ? tail = Translate.crawler (tail) # 翻譯后返回的結(jié)果重新賦值給tail? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? content = head + mid + tail # 重新組合成一行內(nèi)容? ? ? ? ? linds[num] = content # 替換列表內(nèi)容? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? num += 1
然后用for把內(nèi)容重新寫入文件即可
來幾張圖吧,著洼,樟遣,
上面三張圖都是翻譯之前
接下來看看翻譯后:
這三張也就是翻譯后的截圖,我不是沒電腦身笤,是23點(diǎn)就關(guān)了豹悬。。展鸡。不想再打開
最后附上代碼鏈接我的GitHub