Python 重要标准库1
来源:互联网 发布:淘宝数据包上传 编辑:程序博客网 时间:2024/06/08 16:58
1.fileinput模块
函数介绍
1.input([files[,inplace[,backup]])
这是最重要的一个函数,便于遍历多个输入流中的行 你能将inplace参数设置为真值进行原地处理,再进行原地处理的时候可选的backup参数将文件名扩展备份到通过原始文件创建的备份文件中
例子:写一个脚本实现把test1.txt文件中的Python替换
#!/usr/bin/pythonimport fileinputfor line in fileinput.input('test1.txt',backup='_bak',inplace=1): print line.replace('Python','LinuxEye'),fileinput.close()~test1.txt文件
执行脚本后生成 test1.txt 和 test1.txt_bak
2.filename() 返回当前文件名称 lineno()返回当前文件的行数 isfirstline() 检查时候当前行是第一行
例子:写一个为python脚本添加行号的脚本
#!/usr/bin/python import fileinputfor line in fileinput.input(inplace=True): line = line.rstrip() num = fileinput.lineno() print '%-40s # %2i' % (line,num)执行 python numberlines.py numberlines.py
显示结果
3.nextfile() 关闭当前文件移动到下一个文件 close() 关闭序列
2.数据结构模块 集合set,堆heap,双端队列deque
(1)set
(1)set是由序列或者其它可迭代对戏构建的。它们主要用于检查成员资格,因此副本是被忽略的,即不存在重复的元素
(2)集合的元素顺序任意
(3)常用函数有 union:求集合并集 issuperset intersection difference & <= >= 具体意思看例子:
堆是优先队列的一种,使用优先队列能以任意顺序增加对戏,并且能够在任何时间找到最小元素
heap的基本操作函数:
heappush(heap,x),heappop(heap), 入堆,及最小元素出堆操作
heapify(heap), 将heap属性强制应用到任意一个列表
heapreplace(heap,x) 将最小元素弹出,同时将x入堆
注意堆中元素并不是严格排序的,但是它满足如下规则:位于i 位置上的元素总大于位于位置i/2的元素
3)deque
deque是数据结构中的双端队列
双端队列能够有效地在左侧增加和弹出元素,这是列表无法实现的,除此之外,它还能有效地旋转(rotate)元素(将它们左移或右移,使得头尾相连)
3.random模块
random模块包括返回随机数的函数,但注意事实上它产生的数字都是伪随机数,如果需要真的随机性,应该使用os模块的urandom函数
常用函数有:
uniform(a,b) 返回随机实数n 在[a,b)区间 randrange([start],stop,[step]): 返回range(start,stop,step)中的随机数
random.choice(seq): 从序列中返回随机元素random.shuffle将给定的序列元素进行随机移位 random.sample从给定序列序列中均一地选择给定数目的元素,同时确保元素互不相同
4.shelve模块
shelve模块提供一个简单的将数据存储到文件中的方法,它有一个open函数,在调用它的时候(使用文件名作为参数),它会返回一个shelf对象,你可以用它来存储内容,只需要把它当做普通的字典(但键一定要作为字符串)来操作即可。在完成工作(并将内容存储待磁盘之后,调用它的close方法。
下面是一个简单的使用shelve模块实现的数据库应用程序:
import sys,shelvedef store_person(db): pid = raw_input('Enter unique ID number: ') person = {} person['name'] = raw_input('Enter name: ') person['age'] = raw_input('Enter age : ') person['phone'] = raw_input('Enter phone number: ') db[pid] = persondef lookup_person(db): pid = raw_input('Enter ID number: ') field = raw_input('What would you like to know?(name,age,phone) ') field = field.strip().lower() print field.capitalize() + ':', db[pid][field]def print_help(): print 'The available commands are:' print 'store:Stores information about a person' print 'lookup: Look ip a person from ID number' print 'quit : save changes and exit' print '?:Print this message'def enter_command(): cmd = raw_input('Enter command (?for help): ') cmd = cmd.strip().lower() return cmddef main(): database = shelve.open('/home/chenwu/databse.dat') try: while True: cmd = enter_command() if cmd == 'store': store_person(database) elif cmd == 'lookup': lookup_person(database) elif cmd == '?': print_help() elif cmd == 'quit': return finally: database.close()if __name__=='__main__': main()运行结果
先输存入若干信息,然后就可以查看
5.re模块
re模块包含一些很有用的操作正则表达式的函数
re.compile将正则表达式(以字符串书写的)转换为模式对象,可以实现更有效率的匹配。通常与search,match等函数结合使用,在调用这些函数时如果使用字符串表示的正则表达式,它们也会在内部将字符串表示为正则表达式对象
re.search会在给定字符串中寻找第一个匹配给定正则表达式的子串,re.match会在给定字符串的开头匹配正则表达式。
re.split会根据模式的匹配项来分割字符串,它允许用任意长度的逗号和空格序列来分割字符串,它有一个maxsplit参数,表示字符串最多可以分割的次数
re.findall以列表的形式返回给定模式的所有匹配项
上面的例子首先返回句子中匹配英文单词的列表,然后返回句子中匹配标点符号的列表
re.sub函数 可以使用给定的替换内容将匹配模式的子字符串替换掉
假设要把类似‘*something*'的字符串用'<em>something</em>替换:
首先建立模式对象,这个模式对象表示第一个字符和最后一个字符都是* 中间是除了*的任意若干字符
从上述例子可以看到,普通文本已经成功转换成HTML
下面用re模块实现一个简单的模板系统
它的功能是可以自动翻译[]中的字符串,实现运算到过程到结果的翻译,和赋值语句的翻译
例如 [7+9]可以翻为16
'[name = "Mr.Gumby:]Hello,[name]'翻译为'Hello,Mr.Gumby'
脚本templates.py代码如下:
#templates.py#coding:utf-8import fileinput,re#匹配中括号里的字段field_pat = re.compile(r'\[(.+?)\]')#将变量收集到这里scope = { }#用于re.sub中def replacement(match): code = match.group(1) try: #如果字段可以求值, 用eval函数求值 return str(eval(code,scope)) except SyntaxError: #否则执行相同作用域内的赋值语句。用exec 实现赋值语句的翻译 exec code in scope return ' '#将所有文本以一个字符串的形式获取lines = []for line in fileinput.input(): lines.append(line)text = ' '.join(lines)#将field 模式的所有匹配项都替换掉print field_pat.sub(replacement,text)键一个test.txt 内容如下:
执行
- Python 重要标准库1
- python标准库1
- Python重要的库
- 开始Python -- 标准库(1)
- python标准库手记【1】
- python -- Python 标准库
- Lua标准库中部分重要函数
- python 一些重要内库
- python标准库学习1-SYS
- python 标准库库
- Python标准库
- python标准库
- Python标准库
- python 标准库
- python学习标准库
- Python标准库简介
- python学习标准库
- [Python]标准库--inspect
- AudioManager黑名单来电自动静音
- 日经社説 20150310 東京大空襲70年が問うもの
- SD/MMC异同
- echarts图形报表缓存问题(option数据缓存)
- UVa 12293 Box Game(博弈,SG函数)
- Python 重要标准库1
- 严蔚敏--快速排序
- IOS单例代码
- js获取Url参数的一般方法
- 日经社説 20150310 日独は国際秩序の安定へ協力強化を
- 《java解惑》--表达式之谜
- 解决asp.net MVC 中局部刷新的问题
- ACCESS数据库增强器需求及介绍
- VS2013编译出现 error MSB8020错误