Python implémente un logiciel de traduction

little bottle
Libérer: 2019-04-28 15:33:19
avant
8964 Les gens l'ont consulté

Cet article parle principalement de l'utilisation de Python pour implémenter un logiciel de traduction. C'est super pratique. Dépêchez-vous de collecter le code et essayez-le. J'espère que cela vous inspirera pour apprendre Python !

J'ai mangé beaucoup de nourriture pour chien de frère Ping il y a deux jours. Il a écrit un logiciel de traduction pour sa petite amie, et j'ai vraiment ressenti le romantisme d'être programmeur. J'ai fait une démo similaire lorsque j'ai pris connaissance des demandes. J'ai envoyé une demande de publication à Baidu Translate pour traduire n'importe quelle phrase, j'ai encore optimisé ce code et ajouté une interface interactive les samedis et dimanches avec le logiciel de traduction d'aujourd'hui.

Présentation du programme

Tout d'abord, prenons une photo pour que chacun se sente it

Python implémente un logiciel de traduction

La fonction du programme est très simple. Vous pouvez choisir n'importe quel traducteur parmi trois traducteurs traditionnels pour traduire des mots et des phrases, et utiliser le PyQt5. pour réaliser une interaction homme-machine. Utilisez le module de requêtes pour envoyer des requêtes et renvoyer les résultats de la traduction à l'utilisateur.

Mise en œuvre spécifique

Utiliser Baidu Translate comme exemple

Tout Traduire pour afficher les informations de la page.

Python implémente un logiciel de traduction

Vous pouvez voir sur l'image qu'il s'agit d'une demande de publication, et les données d'en-tête de la demande sont également clairement affichées dans l'image.

Python implémente un logiciel de traduction

Nous devons ajouter les données ci-dessus, où simple_means_flag est un montant fixe et la requête représente le mot à traduire. Sur la base de ces informations, nous écrivons. un simple test du code.

import requests
headers={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36"}
post_data={
'query': 'Ahab杂货铺',
'from': 'zh',
'to': 'en',
'sign': '413120.175857',
'token':'64d8ce70799b54833f56b43f9d6eb3b4'
}

post_url="https://fanyi.baidu.com/v2transapi"
r=requests.post(post_url,data=post_data,headers=headers)
print(r.content.decode())
Copier après la connexion

Après l'exécution, les résultats suivants sont affichés :

Python implémente un logiciel de traduction

La raison de l'erreur ci-dessus est sign et token Quel est le problème avec ces deux paramètres, parlons d'abord du jeton. Le jeton se trouve directement dans le code source de la page d'accueil de Baidu Translation :

Python implémente un logiciel de traduction

. car l'horodatage n'est pas synchronisé. Par conséquent, le jeton obtenu en demandant directement la page d'accueil de Baidu Translate ne peut pas être utilisé. Nous pouvons uniquement copier manuellement la valeur du jeton actuellement affichée sur la page Web et l'attribuer au jeton dans le code.

Le paramètre de signe est généré dans le frontend en fonction du contenu traduit. Si le contenu de la requête et la connexion dans la demande envoyée ne correspondent pas, la réponse reçue est une erreur. La prochaine chose à faire est de déchiffrer le signe Baidu Translate. Le signe est généré à partir d'un fichier js. La figure ci-dessous est le fichier js qui génère le signe.

Python implémente un logiciel de traduction

将这个代码放在格式化工具中重新排版一下,找到 sign 执行函数的代码,再用 execjs,执行这段 js 代码,在计算过程中还需要 gtk 的值,这个值在翻译首页获取一下就可以。

js = js.replace(
Copier après la connexion

上边的步骤完成以后我们就可以愉快的进行翻译了。

图形化界面用的是 pyQt5 这个模块,实现起来不难。

class Demo(QWidget):
def __init__(self, parent=None):
super().__init__()
elf.setWindowTitle('翻译软件-公众号: Ahab杂货铺')
self.Label1 = QLabel('原文')
self.Label2 = QLabel('译文')
self.LineEdit1 = QLineEdit()
self.LineEdit2 = QLineEdit()
self.translateButton1 = QPushButton()
self.translateButton2 = QPushButton()
self.translateButton3 = QPushButton()
self.translateButton1.setText('百度翻译')
self.translateButton2.setText('有道翻译')
self.translateButton3.setText('谷歌翻译')
self.grid = QGridLayout()
self.grid.setSpacing(12)
self.grid.addWidget(self.Label1, 1, 0)
self.grid.addWidget(self.LineEdit1, 1, 1)
self.grid.addWidget(self.Label2, 2, 0)
self.grid.addWidget(self.LineEdit2, 2, 1)
self.grid.addWidget(self.translateButton1, 1, 2)
self.grid.addWidget(self.translateButton2, 2, 2)
self.grid.addWidget(self.translateButton3, 3, 2)
self.setLayout(self.grid)
self.resize(400, 150)
self.translateButton1.clicked.connect(lambda : self.translate(api='baidu'))
self.translateButton2.clicked.connect(lambda : self.translate(api='youdao'))
self.translateButton3.clicked.connect(lambda : self.translate(api='google'))
self.bd_translate = baidu()
elf.yd_translate = youdao()
self.gg_translate = google()
def translate(self, api='baidu'):
word = self.LineEdit1.text()
if not word:
       return
if api == 'baidu':
      results = self.bd_translate.translate(word)
elif api == 'youdao':
      results = self.yd_translate.translate(word)
elif api == 'google':
       results = self.gg_translate.translate(word)
else:
      raise RuntimeError('Api should be <baidu> or <youdao> or <google>...')
for result in results:
      self.LineEdit2.setText(result)</google></youdao></baidu>
Copier après la connexion

 相关教程:Python视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal