python控制台英汉汉英电子词典


Posted in Python onApril 23, 2020

用python实现了下控制台电子词典,数据来自有道,通过向有道发送http表单数据,然后将服务器返回的json数据解析得到翻译结果,代码比较简单,练练手!

# coding=utf-8
# Filename: trans.py
# Author: qianghaohao(CodeNutter)
# Email: codenutter@foxmail.com
# Program: 控制台电子词典
#
import os
import sys
import requests
import random
import json
# import chardet # 第三方模块检查字符串编码,用于调试
from requests.exceptions import ConnectionError, Timeout
# os.system('set PYTHONIOENCODING=UTF-8')
def GetHelp():
 U'''
 GNU trans 1.0
  By qianghaohao(CodeNutter)
 Usage: trans [OPTION] [statements]
 --version 版本信息
 --help 使用帮助
 Example: trans campus
  trans --version
  trans --help
 '''
 pass
 
if (len(sys.argv) < 2):
 print '''
  trans: missing OPTION
  Usage: trans [OPTION] [statements]
  Try 'trans --help' for more details!
  '''
 sys.exit(1)
if sys.argv[1].startswith('--'):
 option = sys.argv[1][2:]
 if option == 'version':
 print 'trans: Version 1.0'
 elif option == 'help':
 print GetHelp.__doc__
 else:
 print '''
  Unknown option!
  Try 'trans --help' for more options!
  '''
 sys.exit(2)
else:
 to_be_trans = ' '.join(sys.argv[1:]).decode('GB2312').encode('utf-8')
 
 # print chardet.detect(to_be_trans) # 第三方模块检查字符串编码,用于调试
 # --------有道翻译表单数据--------
 data={}
 data['type']='AUTO'
 data['i']=to_be_trans
 data['doctype']='json'
 data['xmlVersion']='1.8'
 data['keyfrom']='fanyi.web'
 data['ue']='UTF-8'
 data['action']='FY_BY_CLICKBUTTON'
 data['typoResult']='true'
 
 youdao_url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=dict2.index'
 
 # ---------- http报头:用户代理 ----------------
 USER_AGENTS = (
 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:11.0) Gecko/20100101 Firefox/11.0',
 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100 101 Firefox/22.0',
 'Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0',
 ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) '
  'Chrome/19.0.1084.46 Safari/536.5'),
 ('Mozilla/5.0 (Windows; Windows NT 6.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46'
  'Safari/536.5')
 )
 # --------- 模拟手工请求:随机切换用户代理 ---------
 headers = {'User-Agent':random.choice(USER_AGENTS)}
 try:
 r = requests.post(youdao_url, timeout=10, headers=headers, data=data)
 except ConnectionError:
 print 'Network connection failed!'
 sys.exit(1)
 except Timeout:
 print 'request timeout!'
 sys.exit(1)
 
 result = r.json()
 print result['translateResult'][0][0]['tgt'].encode(sys.stdout.encoding)

使用示例(如果感兴趣的朋友可以用pyinstaller工具将py源码转换成exe格式,直接执行,比较方便,在此用解释器执行): 

python控制台英汉汉英电子词典

附源码地址:电子词典

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
理解Python中函数的参数
Apr 27 Python
python操作redis的方法
Jul 07 Python
pyenv命令管理多个Python版本
Mar 26 Python
Python从文件中读取指定的行以及在文件指定位置写入
Sep 06 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
Python流程控制常用工具详解
Feb 24 Python
在python tkinter界面中添加按钮的实例
Mar 04 Python
Python利用Xpath选择器爬取京东网商品信息
Jun 01 Python
Python实现壁纸下载与轮换
Oct 19 Python
Python修改DBF文件指定列
Dec 19 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
Jun 13 Python
Python制作春联的示例代码
Jan 22 Python
测试、预发布后用python检测网页是否有日常链接
Jun 03 #Python
Python中的CURL PycURL使用例子
Jun 01 #Python
Python实现多线程下载文件的代码实例
Jun 01 #Python
python使用在线API查询IP对应的地理位置信息实例
Jun 01 #Python
pip 错误unused-command-line-argument-hard-error-in-future解决办法
Jun 01 #Python
2款Python内存检测工具介绍和使用方法
Jun 01 #Python
使用Python的Supervisor进行进程监控以及自动启动
May 29 #Python
You might like
PHP递归返回值时出现的问题解决办法
2013/02/19 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
Docker 如何布置PHP开发环境
2016/06/21 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
php实现微信企业转账功能
2018/10/02 PHP
laravel 解决多库下的DB::transaction()事务失效问题
2019/10/21 PHP
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
简介JavaScript中的sub()方法的使用
2015/06/08 Javascript
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
2017/02/14 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
javascript用rem来做响应式开发
2018/01/13 Javascript
vue watch监听对象及对应值的变化详解
2018/02/24 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
Vue props用法详解(小结)
2018/07/03 Javascript
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
Python利用ansible分发处理任务
2015/08/04 Python
深入学习Python中的装饰器使用
2016/06/20 Python
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
Python+OpenCV图片局部区域像素值处理改进版详解
2019/01/23 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
HTML5之SVG 2D入门3—文本与图像及渲染文本介绍
2013/01/30 HTML / CSS
美国南加州的原创极限运动潮牌:Vans(范斯)
2016/08/05 全球购物
世界领先的以旅馆为主的在线预订平台:Hostelworld
2016/10/09 全球购物
大学生怎样写好自荐信
2014/02/25 职场文书
护理助产毕业生的求职信
2014/03/02 职场文书
活动总结格式范文
2014/04/26 职场文书
银行竞聘演讲稿
2014/05/16 职场文书
乒乓球比赛通知
2015/04/27 职场文书
优秀班干部主要事迹材料
2015/11/04 职场文书
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python