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记录运行pid,并在需要时kill掉它们的实例
Jan 16 Python
Python编写一个闹钟功能
Jul 11 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
Nov 29 Python
python实现将excel文件转化成CSV格式
Mar 22 Python
Python列表list排列组合操作示例
Dec 18 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
Sep 11 Python
Python面向对象之继承原理与用法案例分析
Dec 31 Python
Selenium启动Chrome时配置选项详解
Mar 18 Python
Python猴子补丁Monkey Patch用法实例解析
Mar 23 Python
Python 虚拟环境工作原理解析
Dec 24 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
Jan 09 Python
pytorch中的 .view()函数的用法介绍
Mar 17 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自动注册登录验证机制实现代码
2011/12/20 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
360通用php防护代码(使用操作详解)
2013/06/18 PHP
二级域名转向类
2006/11/09 Javascript
IE和Firefox下event事件杂谈
2009/12/18 Javascript
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
JS数组返回去重后数据的方法解析
2017/01/03 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
vue实现登录后页面跳转到之前页面
2018/01/07 Javascript
vue-cli 默认路由再子路由选中下的选中状态问题及解决代码
2018/09/06 Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
2018/12/13 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
vue 解决data中定义图片相对路径页面不显示的问题
2020/08/13 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
Python学习资料
2007/02/08 Python
python发送伪造的arp请求
2014/01/09 Python
python里使用正则的findall函数的实例详解
2017/10/19 Python
Python聊天室程序(基础版)
2018/04/01 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
2020/02/26 Python
Selenium启动Chrome时配置选项详解
2020/03/18 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
2020/04/21 Python
python 中的命名空间,你真的了解吗?
2020/08/19 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
大学生思想汇报范文
2013/12/31 职场文书
庆六一活动总结
2014/08/29 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
2014国庆节标语口号
2014/09/19 职场文书
英语四级考试作弊检讨书
2014/09/29 职场文书
Vue3.0写自定义指令的简单步骤记录
2021/06/27 Vue.js
Python  lambda匿名函数和三元运算符
2022/04/19 Python