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()

结果如图:

>>>
      name	 age	 sex

      张三	 78	 male

      李四	 50	 male

      王五	 80	 male

      张强	 90	 female

调用层次结构:

如果被调用模块程序与模块程序不在同一个目录文件下,则需要调用os.path.append(模块文件所在的目录)

注意:.pyc是模块字节码文件,在使用模块是Python解释器需要把模块加载到系统里,若发现.py比.pyc新,则需要重新编译生成.pyc,否则不需要。文件.pyc是在第一次加载模块文件时完成的。

3,使用模块示例Json模块

1)Python下使用dumps函数可以将Python数据字典转换成Json数据结构。

示例:

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 [email protected]
or [email protected],thanks!‘‘‘
res=r‘\w[\w\.-]+@[\w\.-]+\.\w{2,4}‘
#*表示匹配0次及其以上,+表示匹配1次及以上。
print re.findall(res,s) 

>>> ================================ RESTART ================================
>>>
[‘[email protected]‘, ‘[email protected]‘]

分组或子模式:把一个正则表达式的全部或者部分分成一个或多个组。其中,分组使用的字符是“(”和“)”。

示例:

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‘]
[‘13306247965‘]

    通配符:匹配限定长度的字符串,例如点号匹配任意一个字符。

转义字符:(详见:Python学习系列(三)(字符串)

3)应用举例:

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开发的进阶知识,模块及其正则的相关知识,正则表达式是编程的一个很重要的知识点,需多多研究。

额外补充一点小知识:

1,sys模块:包含了与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学习系列(六)(模块),布布扣,bubuko.com

时间: 2024-10-07 23:46:20

Python学习系列(六)(模块)的相关文章

Python学习系列(四)Python 入门语法规则2

Python学习系列(四)Python 入门语法规则2 2017-4-3 09:18:04 编码和解码 Unicode.gbk,utf8之间的关系 2.对于py2.7, 如果utf8>gbk, utf8解码成Unicode,再将unicode编码成gbk 对于py3.5 如果utf8>gbk, utf8 直接编码成gbk(中间那一步直接被优化了) 3.很多时候,这个可以直接跳过,只有当编码出下问题的时候,再考虑这个知识点 二.运算符 1.算数运算: 2.比较运算: 3.赋值运算: 4.逻辑运算

Python学习系列(九)(IO与异常处理)

Python学习系列(九)(IO与异常处理) Python学习系列(八)( 面向对象基础) 一,存储器 1,Python提供一个标准的模块,称为pickle,使用它既可以在一个文件中存储任何Python对象,又可以把它完整的取出来,这被称为持久的存储对象.类似的,还有一个功能与之相同的模块—cPickle,用c语言编写的,速度比pickle快1000倍. 2,示例: 1 import cPickle as p 2 shoplistfile='shoplist.data' 3 shoplist=[

Python学习系列(五)(文件操作及其字典)

Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出,也可以指定每次read读多少字节,例如: 1 #coding:utf-8 2 fn='test1.py' 3 fp=open(fn,'r') #以读的方式打开文件,文件必须首先存在和,.文件在同一目录下py 4 print 'reading pos:',fp.tell() 5 r=fp.read(20) #

Python学习系列(八)( 面向对象基础)

 Python学习系列(八)( 面向对象基础) Python学习系列(七)( 数据库编程) 一,面向对象 1,域:属于一个对象或类的变量.有两种类型,即实例变量—属于每个实例/类的对象:类变量—属于类本身. 2,类的方法:对象也可以使用属于类的函数来具有功能,这样的函数称之为类的方法.域和方法合称为类的属性.类使用class关键字创建,类的属性被列在一个缩进块中. 3,self:类的方法与普通的函数只有一个特别的区别----他们必须有一个额外的第一个参数名称,但是在调用的时候不能为其赋值,Pyt

Python学习之cookielib模块

cookielib是一个用于处理客户端HTTP cookie的模块 https://docs.python.org/2/library/cookielib.html?highlight=cookielib#cookielib In [191]: import cookielib,urllib2 In [192]: cj=cookielib.CookieJar() In [193]: openner=urllib2.build_opener(urllib2.HTTPCookieProcessor(

Python学习系列(一)(基础入门)

Python入门 本系列为Python学习相关笔记整理所得,IT人,多学无害,多多探索,激发学习兴趣,开拓思维,不求高大上,只求懂点皮毛,作为知识储备,不至于落后太远.如果兴趣学习者,推荐一个基础视频:http://edu.51cto.com/lesson/id-11637.html 本文主要介绍Python的相关背景,环境搭建. 一.了解Python 1,关于Python的语言特点: 借用Python官网Https://www.python.org的解释: Python is powerful

Python学习系列(三)(字符串)

Python学习系列(三)(字符串) 一个月没有更新博客了,最近工作上有点小忙,实在是没有坚持住,丢久又有感觉写的必要了,可见本人的坚持精神不佳,本系列没有任何目的,纯属业余学习,或者说是一时兴趣所致.通过本文,能够学习字符串的基本操作,日积月累,多多练习,学到了,会用了才是王道. 一.基本概念 1,关于转义问题 1)"''"方式: >>> s="Hello 'Jack'--" >>> print s Hello 'Jack'--

Python学习系列:目录

Python学习系列(二)Python 编译原理简介 Python学习系列(三)Python 入门语法规则1

Python学习系列(二)(基础知识)

Python基础语法 Python学习系列(一)(基础入门) 对于任何一门语言的学习,学语法是最枯燥无味的,但又不得不学,基础概念较繁琐,本文将不多涉及概念解释,用例子进行相关解析,适当与C语言对比,避免陷入语法的苦海.我认为初学者学习语法的目标是学会使用即可,关于对概念的深入理解,剖析,没有一定的知识积累是很难做到的. 学习Python,基本语法不是特别难,有了C的基本知识,理解比较容易.本文的主要内容是Python基础语法,学完后,能熟练使用就好.(开发环境依然是Python2.7,简单使用