python3 實現對代碼文件中註釋的翻譯
阿新 • • 發佈:2019-04-11
tran color def 是否 進行 salt one 註釋 改變
心血來潮,昨天看見群裏討論一段圖片轉pdf的代碼,直接拿過來發現不能用,原來是因為代碼中傳的文件對象不對,源碼中說傳遞的是一個文件路徑或一個文件對象。他傳的是一個文件名,很是尷尬。
想了想,主要原因還是因為很多人不看源碼,看了源碼經常因為大段的註釋英文看不懂,很是尷尬。
然後想了想,是否可以寫一個翻譯功能對源碼進行翻譯。功能實現,代碼如下:
翻譯中文的代碼(使用有道翻譯= =):
1 def fanyi_youdao(self,content): 2 url = ‘http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule‘ 3 data = {} 4 data[‘i‘] = content 5 data[‘to‘] = ‘AUTO‘ 6 data[‘smartresult‘] = ‘dict‘ 7 data[‘client‘] = ‘fanyideskweb‘ 8 data[‘salt‘] = ‘1517200217152‘ 9 data[‘sign‘] = ‘fc8a26607798294e102f7b4e60cc2686‘10 data[‘doctype‘] = ‘json‘ 11 data[‘version‘] = ‘2.1‘ 12 data[‘keyfrom‘] = ‘fanyi.web‘ 13 data[‘action‘] = ‘FY_BY_CLICKBUTTION‘ 14 data[‘typoResult‘] = ‘true‘ 15 data = urllib.parse.urlencode(data).encode(‘utf-8‘) 16 req = urllib.request.Request(url, data)17 req.add_header(‘User-Agent‘, 18 ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36‘) 19 response = urllib.request.urlopen(req) 20 html = response.read().decode(‘utf-8‘) 21 22 target = json.loads(html) 23 sumString = ‘‘ 24 for i in target[‘translateResult‘]: 25 for j in i: 26 if(j[‘tgt‘]!=None): 27 sumString+=j[‘tgt‘]+‘\n‘ 28 return sumString
最後有個小坑,經過json.loads轉換後需要查看一下返回過來的值,因為target中翻譯內容返回過來的list或dict不同,需要根據實際情況改變,其他的都是request的簡單應用。
下面是替換翻譯並復制出一個文件:
1 def del_zs(self): 2 with open(r"G:\re.py", "r") as file: 3 file_read = file.read() 4 en_content = re.findall(‘""".*?"""‘, file_read, re.S) 5 new_file_read = file_read 6 for i in en_content: 7 with open(r"G:\re_cn1.py","w+",encoding=‘UTF-8‘) as new_file: 8 new_file_read = new_file_read.replace(i, ‘"""\n‘ + self.fanyi_youdao(i.replace(‘\n‘, ‘‘)).strip().strip("“”") + ‘\n"""‘) 9 new_file.write(new_file_read) 10 return en_content
這裏是用到了python3中的re模塊,思路就是使用正則匹配被"""夾著的內容(也就是註釋),然後翻譯內容(因為re匹配過來的內容是一個list所以就直接用for循環這個list)然後利用strip對中文翻譯過來的引號進行刪除,再加上英文的三引號。然後將翻譯過來的內容利用list進行逐個replace,就可以實現了。
python3 實現對代碼文件中註釋的翻譯