`

python常用模块

阅读更多
#!/usr/bin/python
# -*-coding:utf-8-*-

import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )

import time
import pprint,pickle
import sys,os,glob,re,math,random

#from urllib2.request import urlopen
import smtplib

from array import array
from collections import deque
import bisect
from heapq import heapify, heappop, heappush

from string import Template

from timeit import Timer


print dir(time)

#文件读写
#文件只读标记为r,只写标记为w,r+表示可读可写,a表示添加到文件结尾,b表示用二进制的方式打开
fs = open("d:/linkd.txt",'r+')
while fs.readline()!='':
	fs.readline()
    #fs.write("hello world")
fs.close()

#pickle模块
#封装
list_01 = [0,1,2,3,4,5,6]
dict_02 = {"name":"limengyu","age":18,"play":"soccer"}
pk = open("d:/9900.pkl","wb",True)
pickle.dump(list_01,pk)
pickle.dump(dict_02,pk)
pk.close()
#拆封
pk = open("d:/9900.pkl","rb")
data = pickle.load(pk)
pprint.pprint(data)
data = pickle.load(pk)
pprint.pprint(data)
pk.close()

#操作系统接口
print os.getcwd()#获取当前工作目录
os.system('mkdir today1')#创建目录
#print dir(os)
#help(os)

#文件通配符
print glob.glob('*.py')

#命令行参数
#>>pythom2.7 dome.py param1 param2 param3
#>>import sys
print sys.argv
#>>['demo.py','param1','param2','param3']

#错误输出重定向和程序终止
sys.stderr.write(" Warning,log file not found!")
#sys.exit()#退出

#字符串模式匹配
result = re.findall(r' \bf[a-z]*',"which foot or hand fell fastest")
print result
result = "AAABBBBCCCC".replace("AAA","DDD")
print result

#数学
print math.pi
print math.cos(math.pi/4)
print math.log(1024,2)
#Random 模块为生成随机选择提供了工具
print random.choice(["apple","blackberry","soso"])
print random.sample(range(100),10)
print random.random() #random float
print random.randrange(10) #random integer chosen from range(6)

#互联网访问
#for line in urlopen('http://www.baidu.com'):
#    line = line.decode('utf-8')
#    print line

#邮件
#server = smtplib.SMTP('localhost')
#server.sendmail('soothsayer@example.org', 'jcaesar@example.org',
#    """To: jcaesar@example.org
#    From: soothsayer@example.org
#    Beware the Ides of March.
#    """)
#server.quit()

#列表工具
a = array('H',[100,300,200,400])
print sum(a)
print a[1:3]
b = [100,300,200,400]
print b[1:3]
#Collections 模块通过方法depue()提供了一个类似列表对象,它从左边开始能更加快速添
#加和删除,但是在中间查询时很慢。这些对象很适合实现队列和广度优先查询。
d = deque(["test1","test2","test3"])
d.append("test4")
print d.popleft()

#处理排序列表的bisect模块
scores = [(100, 'perl'), (200, 'tcl'), (400, 'lua'), (500, 'python')]
bisect.insort(scores, (50, 'ruby'))
print scores

#Headpq 模块为基于正规列表的堆实现提供了函数。最小的值入口总是在位置0上。这对那
#些希望重复访问最小元素而不像做一次完成列表排序的应用过程序很有用。
data = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0]
heapify(data) # rearrange the list into heap order
print data
heappush(data, -5) # add a new entry
print data
print [heappop(data) for i in range(3)] # fetch the three smallest entries


#模板
#String 模块包含一个用途广泛的类,此类为最终用户的编辑提供了简单的语法支持。这让用
#户不修改应用程序的前提下实现他们应用程序的定制。
t = Template('${A}folk send $$10 to $cause.')
print t.substitute(A='Beckham', cause='Giggs')

t = Template('Return the $item to $owner.')
d = dict(item='unladen swallow',owner="Giggs")
print t.substitute(d)


#性能评测
print Timer('t=a; a=b; b=t', 'a=1; b=2').timeit()
print Timer('t=a; a=b; b=t', 'a=1; b=2').timeit()
print Timer('a,b = b,a', 'a=1; b=2').timeit()

#字符串
#字符串常量可以用不同的方法分在好多行。
#1.可以用反斜杠作为行最后一个字符,用来实现与下一行的逻辑连接
hello = "This is a rather long string containing\n\
several lines of text just as you would do in C.\n\
Note that whitespace at the beginning of the line is\
significant."
print(hello)
#2.或则,可用一对三个引号或者"'把字符串包围,当运行三个字符串的时候,行尾不是没有转
#义,而是包含着字符中了。
print("""\
Usage: thingy [OPTIONS]
-h Display this usage message
-H hostname Hostname to connect to
""")

#如果我们想把字符串当做输入字符,\n字符不被转为新行,而是作为代码中的结束符。
#都当做数据包含在字符串中
hello = "This is a rather long string containing\n\
several lines of text much as you would do in C."
hello1 = r"This is a rather long string containing\n\
several lines of text much as you would do in C."
print(hello)
print('\n')
print(hello1)
print('\n')
#字符串还可以用+ 操作符进行相加和* 操作符进行重复。
print 'Help' + 'A'
print '<' + 'word'*5 + '>'
print 'str' 'ing' "..." 'aa'


#正则re模块
# 将正则表达式编译成Pattern对象,注意hello前面的r的意思是“原生字符串”  
pattern = re.compile(r'hello')  
   
# 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None  
match1 = pattern.match('hello world!')  
match2 = pattern.match('helloo world!')  
match3 = pattern.match('helllo world!')  
  
#如果match1匹配成功  
if match1:  
    # 使用Match获得分组信息  
    print match1.group()  
else:  
    print 'match1匹配失败!'  
  
  
#如果match2匹配成功  
if match2:  
    # 使用Match获得分组信息  
    print match2.group()  
else:  
    print 'match2匹配失败!'  
  
  
#如果match3匹配成功  
if match3:  
    # 使用Match获得分组信息  
    print match3.group()  
else:  
    print 'match3匹配失败!'



a = re.compile(r"""\d +  # the integral part 
                   \.    # the decimal point 
                   \d *  # some fractional digits""", re.X)  
b = re.compile(r"\d+\.\d*")
match11 = a.match('3.1415')  
match12 = a.match('33')  
match21 = b.match('3.1415')  
match22 = b.match('33')   
  
if match11:  
    # 使用Match获得分组信息  
    print match11.group()  
else:  
    print u'match11不是小数'  
      
if match12:  
    # 使用Match获得分组信息  
    print match12.group()  
else:  
    print u'match12不是小数'  
      
if match21:  
    # 使用Match获得分组信息  
    print match21.group()  
else:  
    print u'match21不是小数'  
  
if match22:  
    # 使用Match获得分组信息  
    print match22.group()  
else:  
    print u'match22不是小数' 


m = re.match(r'hello', 'hello world!')  
print m.group() 

#re模块还提供了一个方法escape(string),用于将string中的正则表达式元字符如*/+/?等之前加上转义符再返回

#match
# 将正则表达式编译成Pattern对象  
pattern = re.compile(r'hello')  
# 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None  
match = pattern.match('hello world!') 
if match:  
    # 使用Match获得分组信息  
    print match.group()  
### 输出 ###  
# hello  

#search
#search(string[, pos[, endpos]]) | re.search(pattern, string[, flags]): 
#这个方法用于查找字符串中可以匹配成功的子串。
# 将正则表达式编译成Pattern对象  
pattern = re.compile(r'world')  
# 使用search()查找匹配的子串,不存在能匹配的子串时将返回None  
# 这个例子中使用match()无法成功匹配  
match = pattern.search('hello world!')
if match:
    # 使用Match获得分组信息  
    print match.group()
### 输出 ###  
# world 

#split
#split(string[, maxsplit]) | re.split(pattern, string[, maxsplit]):
#按照能够匹配的子串将string分割后返回列表。
#maxsplit用于指定最大分割次数,不指定将全部分割。
p = re.compile(r'\d+')  
print p.split('one1two2three3four4') 
### output ###  
# ['one', 'two', 'three', 'four', ''] 

#findall
#findall(string[, pos[, endpos]]) | re.findall(pattern, string[, flags]):
#搜索string,以列表形式返回全部能匹配的子串。
p = re.compile(r'\d+')  
print p.findall('one1two2three3four4')   
### output ###  
# ['1', '2', '3', '4'] 

#finditer
#finditer(string[, pos[, endpos]]) | re.finditer(pattern, string[, flags]):
#搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器。
p = re.compile(r'\d+')  
for m in p.finditer('one1two2three3four4'):  
    print m.group(),
### output ###  
# 1 2 3 4  


#sub
#sub(repl, string[, count]) | re.sub(pattern, repl, string[, count]):
#使用repl替换string中每一个匹配的子串后返回替换后的字符串。 
#当repl是一个字符串时,可以使用\id或\g<id>、\g<name>引用分组,但不能使用编号0。 
#当repl是一个方法时,这个方法应当只接受一个参数(Match对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组)。 
#count用于指定最多替换次数,不指定时全部替换。
p = re.compile(r'(\w+) (\w+)')  
s = 'i say, hello world!'    
print p.sub(r'\2 \1', s)     
def func(m):  
    return m.group(1).title() + ' ' + m.group(2).title()  
print p.sub(func, s)  
### output ###  
# say i, world hello!  
# I Say, Hello World! 


#subn
#subn(repl, string[, count]) |re.sub(pattern, repl, string[, count]):
#返回 (sub(repl, string[, count]), 替换次数)。
p = re.compile(r'(\w+) (\w+)')  
s = 'i say, hello world!'  
print p.subn(r'\2 \1', s)  
def func(m):  
    return m.group(1).title() + ' ' + m.group(2).title()  
print p.subn(func, s)  
### output ###  
# ('say i, world hello!', 2)  
# ('I Say, Hello World!', 2) 
分享到:
评论

相关推荐

    Python常用模块

    Python常用模块整理

    python常用模块实例手册

    涵盖大部分python常用模块方法使用实例,方便新手学习和快速使用python。 请使用[notepad++]或[Sublime]等编辑器打开 1基础 2常用模块 3socket 4mysql 5处理信号 6缓存数据库 7web页面操作 8并发 9框架 10例子

    中文版的python常用模块库清单.zip

    中文版的python常用模块库清单,是zwPython项目的一部分,源自目前最常用的python第三方模块库清单:awesome-python的基础上 软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、...

    Python常用模块.pdf

    Python常用模块.pdf

    python常用模块打包.zip

    1.beautifulsoup4-4.5.1.tar 2.beautifulsoup4-4.5.1.tar 3.chardet-3.0.4-py2.py3-none-any 4.cssselect-1.1.0-py2.py3-none-any 5.idna-2.8-py2.py3-none-any 6.lxml-4.5.2-cp36-cp36m-win_amd64 ...

    python常用模块总结

    python常见模块整理,整理为PPT格式,文档带有超链接,查询方便。

    python常用模块.pdf

    Python os 模块详解 Python 的 os 模块提供了一个轻便的方法来使用依赖操作系统的功能。这个模块中关于 Unix 中的函数大部分都被略过,翻译主要针对 Windows。 os 模块的主要功能 1. 文件和文件夹操作:os 模块...

    Python常用模块解析汇总

    本篇文章将对Python中的一些常用模块进行解析,包括time、datetime、random以及与操作系统交互密切的os模块,还有与解析器相关的sys模块。 1. **time模块**:time模块提供了处理时间的各种功能。例如,`time.sleep...

    Python常用模块---psutil下载

    Python中的`psutil`模块是一个跨平台库,用于获取系统进程和资源监控的信息。它提供了在操作系统级别收集信息的能力,包括但不限于CPU使用率、内存使用情况、网络活动、磁盘I/O以及进程详细信息。`psutil`在Python中...

    python入门教程及常用模块下载地址

    在本文中,我们将深入探讨Python入门教程以及如何利用Python的常用模块。 首先,Python 的语法清晰,易于理解,对于有编程经验的人来说,如Java或JavaScript开发者,可以在很短时间内掌握Python的基本概念。在给定...

    Python常用模块介绍

    python除了关键字(keywords)和内置的类型和...* pickle: pickle模块被用来序列化python的对象到bytes流,从而适合存储到文件,网络传输,或数据库存储。(pickle的过程也被称serializing,marshalling或者flattening

    Python常用模块sys,os,time,random功能与用法实例分析

    这篇文章主要介绍了Python常用模块sys,os,time,random功能与用法,结合实例形式分析了Python模块sys,os,time,random功能、原理、相关模块函数、使用技巧与操作注意事项,需要的朋友可以参考下 本文实例讲述了Python...

    Python基础—常用模块

    Python基础知识点汇总,方便新手入门学习。此文件是思维导图文件,需要用xmind等软件打开。

    举例讲解Python常用模块

    datetime 日期时间类,主要熟悉API,时区的概念与语言无关。 from datetime import datetime as dt dt.utcnow() # 系统UTC时间 dt.now() # 系统当前时间 dt(2018, 3, 27, 14, 30) # 获得2018-3-27 14:30对应的...

    20天掌握Python开发④Python常用模块

    在“20天掌握Python开发④Python常用模块”课程中,我们将深入探讨Python中的一些核心模块,帮助零基础的小白快速入门并熟练掌握这些模块的使用。 首先,我们要了解Python的基础模块,如`sys`模块,它提供了与...

    Python常用模块之requests模块用法分析

    本文实例讲述了Python常用模块之requests模块用法。分享给大家供大家参考,具体如下: 一. GET请求 1.访问一个页面 import requests r=requests.get('http://www.so.com') print(r.status_code) print(r.text) 2....

    Python常用内置标准模块与扩展库

    一、Python常用的内置标准模块 二、Python常用扩展库  Python提供了大约200多个内置的标准模块,涵盖了Python运行时服务、文字模式匹配、操作系统接口、数学运算、对象永久保存、网络和Internet脚本和GUI构建等...

    Python常用模块函数代码汇总解析

    ### Python常用模块函数代码汇总解析 #### 一、文件和目录操作 在Python中,处理文件和目录操作通常涉及到多个内置模块,如`os`和`os.path`。这些模块提供了丰富的API来处理文件和目录。 - **创建、删除、修改、...

Global site tag (gtag.js) - Google Analytics