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类的用法实例浅析
May 27 Python
python访问抓取网页常用命令总结
Apr 11 Python
python深度优先搜索和广度优先搜索
Feb 07 Python
python的dataframe转换为多维矩阵的方法
Apr 11 Python
基于Python List的赋值方法
Jun 23 Python
Python之NumPy(axis=0 与axis=1)区分详解
May 27 Python
python递归法解决棋盘分割问题
Jul 17 Python
python3 深浅copy对比详解
Aug 12 Python
python小白切忌乱用表达式
May 29 Python
Python绘图之柱形图绘制详解
Jul 28 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
Nov 02 Python
pytorch中的model.eval()和BN层的使用
May 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
ThinkPHP分组下自定义标签库实例
2014/11/01 PHP
十大使用PHP框架的理由
2015/09/26 PHP
PHP微信红包API接口
2015/12/05 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
学习并汇集javascript匿名函数
2010/11/25 Javascript
jQuery 3.0 的 setter和getter 模式详解
2016/07/11 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
2016/09/14 Javascript
EsLint入门学习教程
2017/02/17 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
2017/08/24 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
Vue3.0数据响应式原理详解
2019/10/09 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
Python中请使用isinstance()判断变量类型
2014/08/25 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
利用Python发送邮件或发带附件的邮件
2020/11/12 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
Python 随机按键模拟2小时
2020/12/30 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
英国骑行、跑步、游泳、铁人三项运动装备专卖店:Wiggle
2016/08/23 全球购物
美国轮胎网站:Priority Tire
2018/11/28 全球购物
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
高中军训感言400字
2014/02/24 职场文书
排球赛新闻稿
2015/07/17 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS
Python序列化与反序列化相关知识总结
2021/06/08 Python
SpringBoot中HttpSessionListener的简单使用方式
2022/03/17 Java/Android
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS