Python学习系列(六)(模块)
一,模块的基本介绍
1,import引入其他标准模块
标准库:Python标准安装包里的模块。
引入模块的几种方式:
i)引入模块:import moduleName
ii)引入模块下的函数:from moduleName import function1,function2,……
iii)引入模块下的所有函数:from moduleName import *
使用模块里的函数的方法:
moduleName.function(agrs)
示例:
>>> import math
>>> r=math.sqrt(16)
>>> print r
4.0
如果模块或者函数名字过长可以在import后使用as给该模块取别名,之后可以通过“别名.函数”使用模块里的函数。
示例:
>>> import webbrowser as web
>>> web.open_new_tab('http://www.cnblogs.com')
True
2,使用自定义模块
testfile.py下:
def readfile():
fr=open('wformat.txt','r')
while (1==1):
line=fr.readline()
if(line==''):
break
else:
print line
fr.close()
test.py下:(与testfile.py同在一个目录文件里面)
import testfile
testfile.readfile()
结果如图:
>>> ===================== RESTART ==============================
>>>
name age sex
张三 78 male
李四 50 male
王五 80 male
张强 90 female
调用层次结构:
|
~/|
|
|
|
|tes1.py
|
#调用“testfile模块的程序文件”tes1.py
|
|
|_test
|
#目录test
|
|
|_ _testfile.py
|
#模块文件testfile.py
|
|
|_ _testfile.pyc
|
#模块字节码文件testfile.pyc
|
注意:.pyc是模块字节码文件,在使用模块是Python解释器需要把模块加载到系统里,若发现.py比.pyc新,则需要重新编译生成.pyc,否则不需要。文件.pyc是在第一次加载模块文件时完成的。
如果被调用模块程序与模块程序不在同一个目录文件下,则需要调用os.path.append(模块文件所在的目录)
3,使用模块示例Json模块
1)Python下使用dumps函数可以将Python数据字典转换成Json数据结构。
|
Python |
Json |
|
dict |
object |
|
list,tuple |
array |
|
unicode str |
str |
|
int,long |
number(int) |
|
float |
number(real) |
|
True |
true |
|
False |
false |
示例:
import json
s=[{'f':(1,3,5,'a'),'x':None}]
d=json.dumps(s)
print d
结果如图:
>>>
[{"x": null, "f": [1, 3, 5, "a"]}]
2)Json数据转换Python数据,解码loads(对应关系如上表)
二,正则模块re
1)正则表达式的常见应用:
- 验证字符串:如合法的邮件地址,HTTP地址等。
- 查找字符串
- 替换字符串
- 提取字符串
2)基本概念:
正则表达式:是一段文本或者一个公式,用来描述用某种模式去匹配一类字符串的公式,并且该公式具有一定的模式。
匹配:给定一段文本或者字符串,使用正则表达式从文本或字符串中查找出符合正则表达式的字符串。有可能文本或字符串存在不止一个部分满足给定的正则表达式,这是每一个这样的部分被称为一个匹配。
元字符:一次只能匹配一个字符或者一个位置。故元字符分:匹配字符的元字符和匹配位置的元字符。
i)匹配字符的元字符
- ^string:匹配所有以string字符串开始的行
- string$:匹配所有以string字符串结尾的行
- $^:匹配空行
- \bStr:\b匹配以Str开始的单词(等价于\<)
- Str\b:\b匹配以Str结尾的单词(等价于\>)
ii)匹配位置的元字符
- \w:匹配单词里字符(字母,数字和下划线)
- \W:匹配单词里非字符
- \d:匹配单词里数字
- \D:匹配单词里非数字
- \s:匹配单词里空格字符
- \S:匹配单词里非空格字符
示例:
>>> import re
>>> s='Hello www.jeapedu.com'
>>> res=r'\bjea'
>>> print re.findall(res,s)
['jea']
>>> res=r'jea\b'
>>> print re.findall(res,s)
[]
>>> res=r'edu\b'
>>> print re.findall(res,s)
['edu'] import re
s='''
ahello
www.baidu.com
hello world nice hellod world
piece of helloe world
'''
res=r'\hello'
print 'hello:',re.findall(res,s)
>>> ================================ RESTART ================================
>>>
hello ['hello', 'hello', 'hello', 'hello'] import re
s='a1b2c3d'
res='\w\d'
print re.findall(res,s)
res='\w\d\w'
print re.findall(res,s)
>>> ================================ RESTART ================================
>>>
['a1', 'b2', 'c3']
['a1b', 'c3d']
import re
s='''Plz write a mail to zhangbocheng189@163.com
or 649414754@qq.com,thanks!'''
res=r'\w[\w\.-]+@[\w\.-]+\.\w{2,4}'
#*表示匹配0次及其以上,+表示匹配1次及以上。
print re.findall(res,s) >>> ================================ RESTART ================================
>>>
['zhangbocheng189@163.com', '649414754@qq.com']
import re
s='''www.baidu.comwww.BaidU.comwww.bAIDU.comwww.baidu.comwww.Baidu.com'''
res1=r'(b|B)\w*(u|U)'
#*表示匹配0次及其以上,+表示匹配1次及以上。
res2=r'[bB]\w*(u|U)'
res3=r'[bB]\w*[uU]'
print res1+':'
print re.findall(res1,s)
print res2+':'
print re.findall(res2,s)
print res3+':'
print re.findall(res3,s) >>> ================================ RESTART ================================
>>>
(b|B)\w*(u|U):
[('b', 'u'), ('B', 'U'), ('b', 'U'), ('b', 'u'), ('B', 'u')]
[bB]\w*(u|U):
['u', 'U', 'U', 'u', 'u']
[bB]\w*[uU]:
['baidu', 'BaidU', 'bAIDU', 'baidu', 'Baidu']
限定符:用于指定允许特定字符或字符集自身重复出现的次数。
- (pattern)?:重复0次或者1次,等价于{0,1}
- (pattern)*:至少重复0次,等价于{0,}
- (pattern)+:至少重复1次,等价于{1,}
- (pattern){m:n}:重复至少m次,至多m次
- (pattern)??:使用重复0次或者1次
- (pattern)*?:尽可能少地使用重复的第一个匹配
- (pattern)+?:尽可能少地使用重复但至少使用一次
示例:
import re
s='''Tell to me 110-123-1114119 or call 4008-6688-9988
or 13306247965'''
res=r'\d+\D\d+\D\d+'
#*表示匹配0次及其以上,+表示匹配1次及以上。
res1=r'\d{11}'
print re.findall(res,s)
print re.findall(res1,s) >>> ================================ RESTART ================================
>>>
['110-123-1114119', '4008-6688-9988']
['']
import re
s='hello www.baidu.com'
print '----------------compile--------------------'
res='[\s\.]'
pat=re.compile(res)
print pat.findall(s)
print pat.split(s)
print '----------------split--------------------'
res='[\s\.]'
print re.findall(res,s)
print re.split(res,s) >>> ================================ RESTART ================================
>>>
----------------compile--------------------
[' ', '.', '.']
['hello', 'www', 'baidu', 'com']
----------------split--------------------
[' ', '.', '.']
['hello', 'www', 'baidu', 'com']
三、小结
本章主要介绍python开发的进阶知识,模块及其正则的相关知识,正则表达式是编程的一个很重要的知识点,需多多研究。
额外补充一点小知识:
import sys
for i in sys.argv:
print i >>>
D:\Python学习\pythontest\test.py
2,dir函数:列举模块定义的标识符,如函数、类和变量。当为dir提供一个模块名称的时候,返回模块定义的名称列表,否则返回当前模块中定义的名称列表。
>>> import sys
>>> dir()
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'i', 'sys']
>>> a=5
>>> dir()
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'a', 'i', 'sys']
>>> del a #删除一个变量/名称
>>> dir()
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'i', 'sys']
>>>
Python学习系列(六)(模块)的更多相关文章
- Python学习系列(七)( 数据库编程)
Python学习系列(七)( 数据库编程) Python学习系列(六)(模块) 一,MySQL-Python插件 Python里操作MySQL数据库,需要Python下安装访 ...
- Python学习系列(四)Python 入门语法规则2
Python学习系列(四)Python 入门语法规则2 2017-4-3 09:18:04 编码和解码 Unicode.gbk,utf8之间的关系 2.对于py2.7, 如果utf8>gbk, ...
- python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍
目录 python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍. 二丶列表,其它语言称为数组 1.列表的定义,以及语法 2.列表的使用,以及常用方法. 3.列表的常用操作 ...
- Python学习系列(九)(IO与异常处理)
Python学习系列(九)(IO与异常处理) Python学习系列(八)( 面向对象基础) 一,存储器 1,Python提供一个标准的模块,称为pickle,使用它既可以在一个文件中存储任何Pytho ...
- Python学习系列(五)(文件操作及其字典)
Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...
- Python学习day18-常用模块之NumPy
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- Python学习 Part4:模块
Python学习 Part4:模块 1. 模块是将定义保存在一个文件中的方法,然后在脚本中或解释器的交互实例中使用.模块中的定义可以被导入到其他模块或者main模块. 模块就是一个包含Python定义 ...
- Python学习第六课
Python学习第六课 课前回顾 列表 创建 通过 [] :写在[]里,元素之间用逗号隔开 对应操作: 查 增 append insert 改(重新赋值) 删除(remove del pop(删除后会 ...
- python学习之argparse模块
python学习之argparse模块 一.简介: argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行 ...
随机推荐
- ThinkPHP开发博客系统笔记之二
1. 登陆验证码 当用户登陆的时候我们希望也弹出验证码,有两种方法可以实现:一是再增加一个弹出验证码的dialog,二是和注册共用一个验证码dialog.第一种方法有大量重复代码,所以我们使用第二种方 ...
- [BZOJ1257]余数之和
Description 给出正整数n和k,计算j(n, k)=k mod 1 + k mod 2 + k mod 3 + … + k mod n的值 其中k mod i表示k除以i的余数. 例如j(5 ...
- Win10易升是什么?如何彻底关闭Windows10易升?
很多朋友反馈在使用电脑的时候,突然弹出一个微软Windows10易升的界面,那么Win10易升是什么,怎么样才可以彻底关闭Win10易升呢? win10易升是什么 1.易升是微软官方发布的升级助理或者 ...
- DPDK编程指南 2.概述
本章节给出了DPDK架构的一个全局概述. DPDK的主要目的就是为数据面快速报文处理应用程序提供一个简洁完整的框架.用户可以通过代码来理解其中使用的一些技术,构建自己的应用程序或添加自己的协议栈.Al ...
- crm开发(基于ssh)(1)
搭建crm练习ssh环境 第一步 导入jar包 第二步 搭建struts2环境 (1)创建action,创建struts.xml配置文件,配置action (2)配置struts2的过滤器 第三步 搭 ...
- sql内连接外连接自然连接
为什么我们要使用内连接和外连接呢?可以从两张或者多张表中找出,我们需要的属性. 这个比较好:http://www.cnblogs.com/youzhangjin/archive/2009/05/22/ ...
- jsp:xpath - xml
.1 关于“/ ”和“// ”的使用“/”是表示当前文档的节点,类似 DOS 目录分割符,“//”则表示当前文档所有的节点.类似查看整个目录.(1)/authors/author:表示选择根目录下.父 ...
- 用OpenCV进行视频截取
记录用OpenCV进行视频截取. 核心代码如下: CvCapture* capture = cvCreateFileCapture(src_avi_file.c_str()); if (capture ...
- WAF:web应用防火墙
1,sql注入2,xss3,不安全下载 code_backup.tar.gz .sql 4.隐私文件访问 .svn .git 5.弱口令6. 非授权访问 redis 7.cc攻击 性能cc攻击8.DD ...
- WAF 强化学习
参考:https://github.com/duoergun0729/3book/tree/master/code/gym-waf 代码: wafEnv.py #-*- coding:utf-8 –* ...