Python学习系列(六)(模块)

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

一,模块的基本介绍

1,import引入其他标准模块

标准库:Python标准安装包里的模块。

引入模块的几种方式:

i)引入模块:import   moduleName

ii)引入模块下的函数:from moduleName import function1,function2,……

iii)引入模块下的所有函数:from moduleName import *

使用模块里的函数的方法:

moduleName.function(agrs)

示例:

1 >>> import math
2 >>> r=math.sqrt(16)
3 >>> print r
4 4.0

View Code

如果模块或者函数名字过长可以在import后使用as给该模块取别名,之后可以通过“别名.函数”使用模块里的函数。

示例:

1 >>> import webbrowser as web
2 >>> web.open_new_tab('http://www.cnblogs.com')
3 True

View Code

2,使用自定义模块

testfile.py下:

1 def readfile():
2     fr=open('wformat.txt','r')
3     while (1==1):
4         line=fr.readline()
5         if(line==''):
6             break
7         else:
8             print line
9     fr.close()

View Code

test.py下:(与testfile.py同在一个目录文件里面)

1 import testfile
2 testfile.readfile()

View Code

结果如图:

1 >>> ===================== RESTART ==============================
2 >>>
3       name age sex
4       张三 78 male
5       李四 50 male
6       王五 80 male
7       张强 90 female

View Code

调用层次结构:

~/|
 
    |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

示例:

1 import json
2 s=[{'f':(1,3,5,'a'),'x':None}]
3 d=json.dumps(s)
4 print d

View Code

结果如图:

1 >>>
2 [{"x": null, "f": [1, 3, 5, "a"]}]

View Code

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:匹配单词里非空格字符

示例:

 1 >>> import re
 2 >>> s='Hello www.jeapedu.com'
 3 >>> res=r'\bjea'
 4 >>> print re.findall(res,s)
 5 ['jea']
 6 >>> res=r'jea\b'
 7 >>> print re.findall(res,s)
 8 []
 9 >>> res=r'edu\b'
10 >>> print re.findall(res,s)
11 ['edu']
12
13 import re
14 s='''
15 ahello
16 www.baidu.com
17 hello world
18
19 nice hellod world
20 piece of helloe world
21 '''
22 res=r'\hello'
23 print 'hello:',re.findall(res,s)
24 >>> ================================ RESTART ================================
25 >>>
26 hello ['hello', 'hello', 'hello', 'hello']
27
28 import re
29 s='a1b2c3d'
30 res='\w\d'
31 print re.findall(res,s)
32 res='\w\d\w'
33 print re.findall(res,s)
34 >>> ================================ RESTART ================================
35 >>>
36 ['a1', 'b2', 'c3']
37 ['a1b', 'c3d']

View Code

     字符集:用方括号括起来的字符集合,如果其中的任何一个字符被匹配,则它就会找到该匹配项,反字符集可在字符前加^。
示例:

 1 import re
 2 s='''Plz write a mail to zhangbocheng189@163.com
 3 or 649414754@qq.com,thanks!'''
 4 res=r'\w[\w\.-]+@[\w\.-]+\.\w{2,4}'
 5 #*表示匹配0次及其以上,+表示匹配1次及以上。
 6 print re.findall(res,s)
 7
 8 >>> ================================ RESTART ================================
 9 >>>
10 ['zhangbocheng189@163.com', '649414754@qq.com']

View Code

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

 1 import re
 2 s='''www.baidu.comwww.BaidU.comwww.bAIDU.comwww.baidu.comwww.Baidu.com'''
 3 res1=r'(b|B)\w*(u|U)'
 4 #*表示匹配0次及其以上,+表示匹配1次及以上。
 5 res2=r'[bB]\w*(u|U)'
 6 res3=r'[bB]\w*[uU]'
 7 print res1+':'
 8 print re.findall(res1,s)
 9 print res2+':'
10 print re.findall(res2,s)
11 print res3+':'
12 print re.findall(res3,s)
13
14 >>> ================================ RESTART ================================
15 >>>
16 (b|B)\w*(u|U):
17 [('b', 'u'), ('B', 'U'), ('b', 'U'), ('b', 'u'), ('B', 'u')]
18 [bB]\w*(u|U):
19 ['u', 'U', 'U', 'u', 'u']
20 [bB]\w*[uU]:
21 ['baidu', 'BaidU', 'bAIDU', 'baidu', 'Baidu']

View Code

限定符:用于指定允许特定字符或字符集自身重复出现的次数。

  • (pattern)?:重复0次或者1次,等价于{0,1}
  • (pattern)*:至少重复0次,等价于{0,}
  • (pattern)+:至少重复1次,等价于{1,}
  • (pattern){m:n}:重复至少m次,至多m次
  • (pattern)??:使用重复0次或者1次
  • (pattern)*?:尽可能少地使用重复的第一个匹配
  • (pattern)+?:尽可能少地使用重复但至少使用一次

示例:

 1 import re
 2 s='''Tell to me 110-123-1114119 or call 4008-6688-9988
 3    or 13306247965'''
 4 res=r'\d+\D\d+\D\d+'
 5 #*表示匹配0次及其以上,+表示匹配1次及以上。
 6 res1=r'\d{11}'
 7 print re.findall(res,s)
 8 print re.findall(res1,s)
 9
10 >>> ================================ RESTART ================================
11 >>>
12 ['110-123-1114119', '4008-6688-9988']
13 ['13306247965']

View Code

 通配符:匹配限定长度的字符串,例如点号匹配任意一个字符。
 转义字符:(详见 : Python学习系列(三)(字符串))
3)应用举例:

 1 import re
 2 s='hello www.baidu.com'
 3 print '----------------compile--------------------'
 4 res='[\s\.]'
 5 pat=re.compile(res)
 6 print pat.findall(s)
 7 print pat.split(s)
 8 print '----------------split--------------------'
 9 res='[\s\.]'
10 print re.findall(res,s)
11 print re.split(res,s)
12
13 >>> ================================ RESTART ================================
14 >>>
15 ----------------compile--------------------
16 [' ', '.', '.']
17 ['hello', 'www', 'baidu', 'com']
18 ----------------split--------------------
19 [' ', '.', '.']
20 ['hello', 'www', 'baidu', 'com']

View Code

三、小结

本章主要介绍python开发的进阶知识,模块及其正则的相关知识,正则表达式是编程的一个很重要的知识点,需多多研究。

额外补充一点小知识:

1,sys模块:包含了与Python的解释器和它的环境有关的函数。

1 import sys
2 for i in sys.argv:
3     print i
4
5 >>>
6 D:\Python学习\pythontest\test.py

View Code

2,dir函数:列举模块定义的标识符,如函数、类和变量。当为dir提供一个模块名称的时候,返回模块定义的名称列表,否则返回当前模块中定义的名称列表。

 1 >>> import sys
 2 >>> dir()
 3 ['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'i', 'sys']
 4 >>> a=5
 5 >>> dir()
 6 ['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'a', 'i', 'sys']
 7 >>> del a   #删除一个变量/名称
 8 >>> dir()
 9 ['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'i', 'sys']
10 >>>

View Code

转载于:https://www.cnblogs.com/zhangbc/p/3901385.html

Python学习系列(六)(模块)相关推荐

  1. 【Python学习系列六】Python语言基本语法

    1. Python语言简介 Python是一种面向对象的解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件, ...

  2. Python: 学习系列之七:模块、PIPY及Anaconda

    系列 Python: 学习系列之一:Python能做什么 Python: 学习系列之二:基础介绍(int/float/string/range/list/tuple/dict/set) Python: ...

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

    Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件      在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...

  4. Python学习笔记:第三方模块2

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  5. python学习总结----时间模块 and 虚拟环境(了解)

    python学习总结----时间模块 and 虚拟环境(了解) time- sleep:休眠指定的秒数(可以是小数) - time:获取时间戳# 获取时间戳(从1970-01-01 00:00:00到 ...

  6. Python学习笔记六——画小猪佩奇

    目录 Python学习笔记六--画小猪佩奇 画布 画笔 属性设置 操纵命令 运动命令 画笔控制命令 全局控制命令 其他命令 Python学习笔记六--画小猪佩奇 使用Python的turtle库可以绘 ...

  7. Python学习笔记13_模块

    Python学习笔记13_模块 文章目录 Python学习笔记13_模块 1.导入模块和的方法及使用 2.分层的文件系统中常用的包结构 3.OS 模块 4.sys 模块 5.math 模块 6.ran ...

  8. Android音视频学习系列(六) — 掌握视频基础知识并使用OpenGL ES 2.0渲染YUV数据

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  9. Python 学习第六讲作业2020-12-28

    Python 学习第六讲作业 lis1 =["name", "author", "introduce"] lis2 =["NOWE ...

最新文章

  1. linux shell 使用代理 proxychains 简介
  2. python将txt文件中的大小写转换_面试题:Python大小写转换
  3. 使用ArcSDE SQL操作怎么获得新对象的objectid、GUID
  4. 【Kafka】Kafka Producer整体架构概述及源码分析
  5. 禅道外部消息提示_Spring Boot中文参考指南(2.1.6)34、消息传递
  6. Shell:函数返回值接收
  7. 了解SQL Server SELECT INTO语句
  8. 推荐两个非常不错的公众号
  9. 高中时代的黑历史产物
  10. Bootstrap学习
  11. 45届ICPC昆明站热身赛C-Statues
  12. python毕业设计作品基于django框架 景区购票系统毕设成品(4)开题报告
  13. 旧金山第二天: OOW 开始
  14. XSSFWorkbook Excel导出导入
  15. oppor9桌面布局设置_oppor9添加桌面图标
  16. 戴尔 成铭3980台式计算机,戴尔成铭3980商用台式机评测 高颜值高性能
  17. 数据结构 深入理解二叉树的实现
  18. 【校招VIP】培训班包装的简历,面试官能不能一眼看出来?
  19. 二维和三维CAD设计Autodesk AutoCAD中文2021/2022/2023
  20. 幽门螺杆菌(简称HP)

热门文章

  1. Microsoft Web 平台安装程序 (Web PI) Microsoft Web Platform Installer
  2. Java数据访问对象模式
  3. 软工实践原型设计——PaperRepositories
  4. 数据科学究竟是什么?
  5. AtCoder Petrozavodsk Contest 001
  6. postfix+mysql 发件服务
  7. html input不可编辑
  8. do{ ...}while(0)应用技巧
  9. Xtrabackup对mysql全备以及增量备份实施
  10. Red Hat Enteripse Linux5下配置yum源的方法