python第六章答案_python第六章
标签:
一、反射
cat = Cat(‘kitty‘)print cat.name #访问实例属性
cat.sayHi() #调用实例方法
print dir(cat) #获取实例的属性名,以列表形式返回
if hasattr(cat, ‘name‘): #检查实例是否有这个属性
setattr(cat, ‘name‘, ‘tiger‘) #same as: a.name = ‘tiger‘
print getattr(cat, ‘name‘) #same as: print a.name
getattr(cat,‘sayHi‘)() #same as: cat.sayHi()
dir([obj]): 调用这个方法将返回包含obj大多数属性名的列表(会有一些特殊的属性不包含在内)。obj的默认值是当前的模块对象。
hasattr(obj, attr):这个方法用于检查obj是否有一个名为attr的值的属性,返回一个布尔值。
getattr(obj, attr):调用这个方法将返回obj中名为attr值的属性的值,例如如果attr为‘bar‘,则返回obj.bar。
setattr(obj, attr, val): 调用这个方法将给obj的名为attr的值的属性赋值为val。例如如果attr为‘bar‘,则相当于obj.bar = val。
二、模块补充
__doc__: 文档字符串。如果模块没有文档,这个值是None。
*__name__: 始终是定义时的模块名;即使你使用import .. as 为它取了别名,或是赋值给了另一个变量名。
*__dict__: 包含了模块里可用的属性名-属性的字典;也就是可以使用模块名.属性名访问的对象。
__file__: 包含了该模块的文件路径。需要注意的是内建的模块没有这个属性,访问它会抛出异常!
importfnmatch as mprint m.__doc__.splitlines()[0] #Filename matching with shell patterns.
print m.__name__ #fnmatch
print m.__file__ #/usr/lib/python2.6/fnmatch.pyc
print m.__dict__.items()[0] #(‘fnmatchcase‘, )
json模块:
实际上JSON就是Python字典的字符串表示,但是字典作为一个复杂对象是无法直接传递,所以需要将其转换成字符串形式.转换的过程也是一种序列化过程.
用json.dumps序列化为json字符串格式
>>> importjson>>> dic {‘Connection‘: [‘keep-alive‘], ‘Host‘: [‘127.0.0.1:5000‘], ‘Cache-Control‘: [‘max-age=0‘]}>>> jdict = json.dumps({‘Connection‘: [‘keep-alive‘], ‘Host‘: [‘127.0.0.1:5000‘], ‘Cache-Control‘: [‘max-age=0‘]})>>> printjdict
{"Connection": ["keep-alive"], "Host": ["127.0.0.1:5000"], "Cache-Control": ["max-age=0"]}
虽然dic和jdict打印的字符串是相同的,但是实际它们的类型是不一样的.dic是字典类型,jdict是字符串类型
>>>type(jdic)>>>type(jdict)
可以用json.dumps序列化列表为json字符串格式
>>> list = [1, 4, 3, 2, 5]>>> jlist =json.dumps(list)>>> printjlist
[1, 4, 3, 2, 5]
json.loads把json字符串反序列化为python对象
son.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
re模块
martch和search的区别
Python提供了两种不同的原始操作:match和search。match是从字符串的起点开始做匹配,而search(perl默认)是从字符串做任意匹配。
注意:当正则表达式是‘ ^ ‘开头时,match与search是相同的。match只有当且仅当被匹配的字符串开头就能匹配 或 从pos参数的位置开始就能匹配 时才会成功。如下:
>>> import re
>>> re.match("c", "abcdef")
>>> re.search("c","abcdef")
>>> re.match("c", "cabcdef")
>>> re.search("c","cabcdef")
>>> patterm = re.compile("c")
>>> patterm.match("abcdef")
>>> patterm.match("abcdef",1)
>>> patterm.match("abcdef",2)
3.模块内容
re.compile(pattern, flags=0)
编译正则表达式,返回RegexObject对象,然后可以通过RegexObject对象调用match()和search()方法。
prog = re.compile(pattern)
result = prog.match(string)
跟
result = re.match(pattern, string)
是等价的。
第一种方式能实现正则表达式的重用。
re.search(pattern, string, flags=0)
在字符串中查找,是否能匹配正则表达式。返回_sre.SRE_Match对象,如果不能匹配返回None。
re.match(pattern, string, flags=0)
字符串的开头是否能匹配正则表达式。返回_sre.SRE_Match对象,如果不能匹配返回None。
re.split(pattern, string, maxsplit=0)
通过正则表达式将字符串分离。如果用括号将正则表达式括起来,那么匹配的字符串也会被列入到list中返回。maxsplit是分离的次数,maxsplit=1分离一次,默认为0,不限制次数。
>>> re.split(‘\W+‘, ‘Words, words, words.‘)
[‘Words‘, ‘words‘, ‘words‘, ‘‘]
>>> re.split(‘(\W+)‘, ‘Words, words, words.‘)
[‘Words‘, ‘, ‘, ‘words‘, ‘, ‘, ‘words‘, ‘.‘, ‘‘]
>>> re.split(‘\W+‘, ‘Words, words, words.‘, 1)
[‘Words‘, ‘words, words.‘]
>>> re.split(‘[a-f]+‘, ‘0a3B9‘, flags=re.IGNORECASE)
注意:我使用的Python是2.6,查看源代码发现split()并没有flags的参数,2.7才增加。这种问题我发现不止一次了,官方的文档 跟 源码不一致的现象,如果发现异常,应该去源码中找找原因。
如果在字符串的开始或结尾就匹配,返回的list将会以空串开始或结尾。
>>> re.split(‘(\W+)‘, ‘...words, words...‘)
[‘‘, ‘...‘, ‘words‘, ‘, ‘, ‘words‘, ‘...‘, ‘‘]
如果字符串不能匹配,将会返回整个字符串的list。
>>> re.split("a","bbb")
[‘bbb‘]
re.findall(pattern, string, flags=0)
找到 RE 匹配的所有子串,并把它们作为一个列表返回。这个匹配是从左到右有序地返回。如果无匹配,返回空列表。
>>> re.findall("a","bcdef")
[]
>>> re.findall(r"\d+","12a32bc43jf3")
[‘12‘, ‘32‘, ‘43‘, ‘3‘]
re.finditer(pattern, string, flags=0)
找到 RE 匹配的所有子串,并把它们作为一个迭代器返回。这个匹配是从左到右有序地返回。如果无匹配,返回空列表。
>>> it = re.finditer(r"\d+","12a32bc43jf3")
>>> for match in it:
print match.group()
12
32
43
3
re.sub(pattern, repl, string, count=0, flags=0)
找到 RE 匹配的所有子串,并将其用一个不同的字符串替换。可选参数 count 是模式匹配後替换的最大次数;count 必须是非负整数。缺省值是 0 表示替换所有的匹配。如果无匹配,字符串将会无改变地返回。
re.subn(pattern, repl, string, count=0, flags=0)
与re.sub方法作用一样,但返回的是包含新字符串和替换执行次数的两元组。
re.escape(string)
对字符串中的非字母数字进行转义
re.purge()
清空缓存中的正则表达式
4.正则表达式对象
re.RegexObject
re.compile()返回RegexObject对象
re.MatchObject
group()返回被 RE 匹配的字符串
start()返回匹配开始的位置
end()返回匹配结束的位置
span()返回一个元组包含匹配 (开始,结束) 的位置
标签:
python第六章答案_python第六章相关推荐
- 《python基础教程》答案(第六章)
<python基础教程>答案(第六章) # created by swy """ solutions to beginning python "&q ...
- 慕课python第六周测验答案_中国大学慕课答案第六章节答案_Python语言程序设计作业答案...
中国大学慕课答案第六章节答案_Python语言程序设计作业答案 更多相关问题 求证:tan(x+y)+tan(x-y)=sin2xcos2x-sin2y. 若cosθ1+tan2θ+sinθ1+cot ...
- python入门题目及答案_Python基础自测题答案和基础知识梳理
Python基础自测题答案和基础知识梳理 1.关于Python中的lambda表达式的函数体自能是单独一条语句,所以答案选择C. 例如:>>>g = lambda x: 2*x+1 ...
- 趣学python编程第六章答案_Python核心编程-第六章-习题
有.in操作符:find()方法和count()方法和index()均能实现 import string import keyword alphas = string.letters + '_' nu ...
- python程序设计实验教程 翟萍 第五章答案_Python程序设计实验教程
第一部分实 验 指 导 实验1Python概述:Python运行环境3 实验2基本数据类型11 实验2.1Python基本数据处理11 实验2.2Python函数库16 实验3选择结构:选择结构的使用 ...
- python程序设计清华大学出版社答案_Python程序设计-清华大学出版社-董付国第1章基础知识.ppt...
您所在位置:网站首页 > 海量文档  > 计算机 > Python Python程序设计-清华大学出版社-董付国第1章 ...
- python语言程序设计基础第二章答案_python语言程序设计基础(嵩天版),第二章程序练习题...
python语言程序设计基础(嵩天版),第二章程序练习题 欢迎访问江南烧酒的博客 2.2汇率兑换程序.按照1美元=6人民币汇率编写一个美元和人民币的双向兑换程序. """ ...
- python中rim的用法_Python笔记(六)_函数
函数一般是从第一行代码开始执行,结束于return语句.异常.或者函数所有语句执行完毕.一旦函数将控制权交还给调用者,就意味着全部结束.函数中做的所有工作以及保存在局部变量中的数据都将丢失.再次调用这 ...
- python程序设计第一章答案_Python《学习手册:第一章-习题》
人们选择Python的六大主要原因是什么? 软件质量:Python注重可读性.一致性和软件质量.Python代码的设计致力于可读性,因此具备了比传统脚本语言更优秀的可重用性和可维护性. Python的 ...
最新文章
- 计算机视觉库OpenCV初步了解
- 仿ArrayList功能的bag类
- java mvc建包结构_Java SSM框架的配置方法、MVC结构的分析、响应的流程
- BootstrapTable入门Demo
- codeforces test #12 C. Subsequences 树状数组统计
- CSDN写博客时设置图片显示大小
- Nginx解决服务器宕机问题
- 转【是什么浪费了我的时间 】
- spring——事务管理
- MySQL 数据库性能优化
- windows文件自动同步
- 电脑如何进行长截图?
- 初级学电脑计算机的入门知识,电脑基础知识入门学习(小白学好电脑从哪里开始)...
- word xml 上下标
- html5中表格怎么写,HTML5制作表格样式本
- 【影音基础】深度解析什么是HDR高动态范围?
- 高级系统架构师培训笔记
- 成人, 像婴儿那样心无旁骛地学习
- macOS Monterey 12.3 (21E230) 虚拟机 IOS 镜像
- ElasticSearch:为中文分词器增加对英文的支持(让中文分词器可以处理中英文混合文档)(转)