用python开发文本翻译小软件
思路介紹
我們在工作或者生活中有沒有碰到這種情況,就是我們需要對內容進行翻譯,平時的時候我們是一句一句的粘貼翻譯后在粘貼回來,針對這種情況 ,我們可以試著可以用代碼的方式幫我們進行執行。方便又快捷
首頁,我們來設計軟件的開發邏輯和思路,大致的思路是這樣的
既然這樣 ,那我們就按照我們前期的思路來寫代碼,分步驟來實現這些功能,
一,分行讀取文本內容:
這里我將代碼粘貼至下面,代碼會做注釋
nenr = input("輸入txt文件所在位置:") #將這里設置為用戶自動輸入 a=[] with open(r"{}".format(nenr), "r") as f:for line in f.readlines(): #加入循環,分行讀取文本內的全部內容line = line.strip('\n') # 去掉列表中每一個元素的換行符,后續等內容翻譯好后存入文本時需要再加上換行符,不然我們存入的數據會堆積在一起a.append(line) #將翻譯的內容存入一個空的列表a print(a) #打印a的內容執行效果
????????
ok這里我們看到,這幾行代碼已經講數據給提取出來了,以一個列表的方式給取出來了,其中,文本里的每一行的內容就是列表里的一個元素,
二,將內容分行提取后進行翻譯并整理好我們需要的格式
? ? ? ? 我們將內容翻譯出來后,這時就得想著,如何將內容給翻譯好?這里我找到了一個第三方的翻譯api,api的信息我就不粘貼了,后續有想要的可以私信我。我們看下如何實現這一步驟,代碼如下:
import requestsnenr = input("輸入txt文件所在位置:") #將這里設置為用戶自動輸入 a=[] with open(r"{}".format(nenr), "r") as f:for line in f.readlines(): #加入循環,分行讀取文本內的全部內容line = line.strip('\n') # 去掉列表中每一個元素的換行符,后續等內容翻譯好后存入文本時需要再加上換行符,不然我們存入的數據會堆積在一起a.append(line) #將翻譯的內容存入一個空的列表a b=[] #定義一個空列表b,這個列表是方便我們后續存入翻譯后的內容 for x in a: #這里我們使用循環,將存入數據的列表a給分步驟翻譯a_1 = requests.get(url="http://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i=""{}".format(x)) #通過循環將列表的數據逐個翻譯b.append(a_1.json()["translateResult"][0][0]["tgt"] + "\n") #這里將翻譯后的數據給提取出來,然后將這個數據存入空列表b中,這里記得再存入的時候加上劃行符“\n” print(b) #查看我們翻譯后的內容ok,我們來看下執行效果
?
我們看到,這里我們已經將內容給翻譯好了,既然翻譯好了的話,我們就可以把翻譯的內容給替換掉文本里的內容了
三,將翻譯后的數據替換掉之前的數據
? ? ? ? 既然翻譯好了,這時候我們就應該把翻譯后的數據替換掉之前的數據才行,不讓我們這樣翻譯和直接手動逐條翻譯有什么區別咧
import requestsnenr = input("輸入txt文件所在位置:") #將這里設置為用戶自動輸入 a=[] with open(r"{}".format(nenr), "r") as f:for line in f.readlines(): #加入循環,分行讀取文本內的全部內容line = line.strip('\n') # 去掉列表中每一個元素的換行符,后續等內容翻譯好后存入文本時需要再加上換行符,不然我們存入的數據會堆積在一起a.append(line) #將翻譯的內容存入一個空的列表a b=[] #定義一個空列表b,這個列表是方便我們后續存入翻譯后的內容 for x in a: #這里我們使用循環,將存入數據的列表a給分步驟翻譯a_1 = requests.get(url="http://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i=""{}".format(x)) #通過循環將列表的數據逐個翻譯b.append(a_1.json()["translateResult"][0][0]["tgt"] + "\n") #這里將翻譯后的數據給提取出來,然后將這個數據存入空列表b中,這里記得再存入的時候加上劃行符“\n” print(b) #查看我們翻譯后的內容 file_handle = open(r"{}".format(nenr), mode='w') file_handle.writelines(b) #將集合b存入文本里 file_handle.close() #數據存入后關閉文本我們來看下執行后的效果
?
?不錯不錯,既然翻譯好了 我們何不再加上其他的一些優化加強咧,比如 判斷是否選擇的是txt文件,或者是當txt文件是否存在 或者 我們可以把代碼給打包成其他的一些內容,既然有思路了,我們就開始吧,
四,判斷用戶輸入的是否是txt文件
? ? ? ? 這里我們要想判斷用戶輸入的是不是txt文件時,我們可以直接判斷后綴,如果用戶輸入的內容的末尾沒有帶上 .txt 這時,我們是否就可以判斷用戶輸入的不是txt文件。有思路就通過代碼實現,代碼如下:
import osimport requestsnenr = input("輸入txt文件所在位置:") #將這里設置為用戶自動輸入 a=[] accs = os.path.splitext(r"{}".format(nenr))[1] in ['.txt'] #這行代碼是將判斷用戶輸入的內容末尾是否是.txt 如果是,則返回true if accs == True: #這里我們加入判斷,如果是返回的是true,則執行正常的代碼:with open(r"{}".format(nenr), "r") as f:for line in f.readlines(): #加入循環,分行讀取文本內的全部內容line = line.strip('\n') # 去掉列表中每一個元素的換行符,后續等內容翻譯好后存入文本時需要再加上換行符,不然我們存入的數據會堆積在一起a.append(line) #將翻譯的內容存入一個空的列表ab=[] #定義一個空列表b,這個列表是方便我們后續存入翻譯后的內容for x in a: #這里我們使用循環,將存入數據的列表a給分步驟翻譯a_1 = requests.get(url="http://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i=""{}".format(x)) #通過循環將列表的數據逐個翻譯b.append(a_1.json()["translateResult"][0][0]["tgt"] + "\n") #這里將翻譯后的數據給提取出來,然后將這個數據存入空列表b中,這里記得再存入的時候加上劃行符“\n”print(b) #查看我們翻譯后的內容file_handle = open(r"{}".format(nenr), mode='w')file_handle.writelines(b) #將集合b存入文本里file_handle.close() #數據存入后關閉文本 else:print("請輸入正確的文件類型") #當用戶輸入的內容不是txt文件時,則給出用戶提示?我們來看下執行后的效果:
?這里我們發現一個問題,當用戶執行后,如果文件類型不正確就直接停止掉了,這樣用戶就需要重輸入,對用戶很不友好,咋辦,我們加入循環,當用戶執行成功后,代碼翻譯后,結束循環,如果文件類型不正確,那就重新循環,順便,再給用戶執行成功時加入一個提示
五,加入循環,提升用戶體驗
? ? ? ? ?這里我們加入循環操作,提示用戶體檢,然后再給執行成功后加上提示,代碼如下
import osimport requests while True: #加入死循環,當翻譯成功后結束循環,其他情況下一直循環nenr = input("輸入txt文件所在位置:") #將這里設置為用戶自動輸入a=[]b = [] #定義一個空列表b,這個列表是方便我們后續存入翻譯后的內容accs = os.path.splitext(r"{}".format(nenr))[1] in ['.txt'] #這行代碼是將判斷用戶輸入的內容末尾是否是.txt 如果是,則返回trueif accs == True: #這里我們加入判斷,如果是返回的是true,則執行正常的代碼:with open(r"{}".format(nenr), "r") as f:for line in f.readlines(): #加入循環,分行讀取文本內的全部內容line = line.strip('\n') # 去掉列表中每一個元素的換行符,后續等內容翻譯好后存入文本時需要再加上換行符,不然我們存入的數據會堆積在一起a.append(line) #將翻譯的內容存入一個空的列表afor x in a: #這里我們使用循環,將存入數據的列表a給分步驟翻譯a_1 = requests.get(url="http://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i=""{}".format(x)) #通過循環將列表的數據逐個翻譯b.append(a_1.json()["translateResult"][0][0]["tgt"] + "\n") #這里將翻譯后的數據給提取出來,然后將這個數據存入空列表b中,這里記得再存入的時候加上劃行符“\n”print(b) #查看我們翻譯后的內容file_handle = open(r"{}".format(nenr), mode='w')file_handle.writelines(b) #將集合b存入文本里file_handle.close() #數據存入后關閉文本print("翻譯成功,請至文件夾內查看") #翻譯成功后提示break #翻譯成功后結束循環else:print("請輸入正確的文件類型") #當用戶輸入的內容不是txt文件時,則給出用戶提示?執行效果如下:
?這里我們看到,執行效果不錯,既然這樣的話,我們何不給代碼打過包,提升軟件的實用性,讓其他電腦上沒裝python的同事也能使用?
六,打包
這里我們使用的是python的打包模塊pyinstaller,我太餓了,打包模塊的使用方法我就不多說了,后續有啥問題或者其他情況可以私聊或者評論,我都會回復
打包代碼:pyinstaller -F -i acc.ico abcc.py
打包后的效果
執行的效果:
?
?今天的趣味分享結束了,路過的點個關注哦 謝謝,后續如果碰到了有趣的軟件會在次分享
總結
以上是生活随笔為你收集整理的用python开发文本翻译小软件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 各纬度气候分布图_气候分布图纬度_世界气
- 下一篇: 用python做频数分析_如何用Pyth