Python 进阶之路-翻译模块
作者:nango 阅读:1749次 来源:原创 时间:2017-07-14 17:09
Git 地址 [python 翻译模块](https://github.com/nangge/python-/tree/master/translate)
该模块主要功能为在linux系统下,通过命令行方式快速进行中英文翻译;在window doc模式下由于编码问题暂不支持英文译中文;具体用法如下:
```
python translate.py chinese
python translate.py -z 中文
```
![](/uploads/20170714/c737f8a64edd4ace8a31efae6e8a8ef1.png)
该翻译模块主要依赖模块为:
```
urllib、json、getopt、sys、xml、colorama
```
## 涉及知识点归纳:
- 字典类型(dict);
该数据类型使用键-值(key-value)对存储,可以方比那快捷的进行数据查找。
用法介绍:
```
#声明一个字典并初始化数据;
#该字典用来存储翻译结果所对应的显示颜色
STRC = {'key':Fore.CYAN,'ps':Fore.BLUE,'pos':Fore.CYAN,'acceptation':'','orig':Fore.YELLOW,'trans':Fore.GREEN}
#获取
STRC['key'] #Fore.CYAN
```
##### - getopt 模块
该模块是专门用来处理命令行参数的,
它提供一个getopt函数,用法如下:
```
getopt(args, shortopts, longopts = [])
参数args一般是sys.argv[1:]
shortopts 短格式 (-)
longopts 长格式(--)
“hp:”
短格式 --- h 后面没有冒号:表示后面不带参数,p:和 i:后面有冒号表示后面需要参数
["help","zh"]
长格式 --- help后面没有等号=,表示后面不带参数,如果有=,表示后面需要参数
实例:
options, args = getopt.getopt(sys.argv[1:], "hz", ['help','zh'])
#h、z为短格式命令参数
python translate.py -z 中文
#help、zh为长格式命令参数
python translate.py --help
```
##### - with ··· as ···:
with语句主要用来处理上下文环境问题,它可以自动关闭文件、线程锁的自动获取和释放等;
##### - urllib的urlopen函数
该函数创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据;简单理解就为,该函数返回的结果就相当于一个本地文件,你可以对它进行读操作;用法如下:
```
with request.urlopen(url) as f:
data = f.read()
```
##### - xml 模块
该模块用来处理xml格式字符串或文件数据。
用法如下:
```
from xml.dom import minidom
#data为xml结构的字符串,如果要解析一个文件中的数据,使用parse方法即可。
每一个结点都有它的nodeName,nodeValue,nodeType属性。
#解析一个xml字符串
DOMTree = minidom.parseString(data)
#得到文档元素对象
root = DOMTree.documentElement
#判断是否还有子节点
if nodes.hasChildNodes():
#接着遍历子节点
for no in nodes.childNodes:
xml_show(no)
else:
#获取节点的标签
tag = nodes.parentNode.tagName
if tag in STRC:
#输出值
color(nodes.nodeValue.replace('\n',''),STRC[tag])
```
##### - colorama 模块
该模块主要用来向控制台输出彩色文字,使用该模块需要先安装
```
pip install colorama
```
用法如下:
```
from colorama import init,Fore
#通过使用autoreset参数可以让变色效果只对当前输出起作用,输出完成后颜色恢复默认设置
init(autoreset=True)
#字符串前边颜色设置指字体的前景色,后边颜色设置指颜色背景色
#颜色值有RED、GREEN、BLUE、MAGENTA、CYAN、WHITE、BLACK
print(Fore.RED + 'nango' + Fore.RESET)
```