此书把关于python重要、常用的知识都讲到了,并且每个知识点用代码说明的很清楚,非常适合初学者学习。
字符串
1、字符串通常由单引号、双引号或三个单引号或三个双引号包围的一串字符组成
2、常见的转义字符
\n 换行符
\t 制表符
\r 回车
\\ \反斜杠
\' 单引号字符串中的单引号
\" 双引号字符串中的双引号
3、常用字符串操作
+ #连接字符串
len() #计算字符串长度,中文字符串按汉字数计算
string.count(子字符串[,开始位置,结束位置]) #计算子字符串在的数量
string.find(sub[, start[, end]]) #查找子字符串出现的起始位置
string.isdigit() #检测字符串是否仅包含数字
string.join() #使用参数字符串对原字符串进行连接
split(sep=None, maxsplit=-1) #使用指定的字符对字符串进行分割,返回分割后的列表
异常处理
1、如果程序中引发了异常而不处理,脚本就会因为异常而终止程序运行。只有在程序中捕获异常,并进行相关的处理,才能使程序不会中断运行。
2、异常处理基本语法
try:
可能产生异常的语句块
except 异常名1:
异常处理语句块
except 异常名2: #可省略
异常处理语句块
......
else: #可省略
未触发异常执行的语句块
finally: #可省略
始终执行的语句块,一般用于释放资源等
3、 except的几种用法
except: #捕获所有异常
except: 异常名 #捕获指定异常,发生了指定异常程序不中断,非指定的异常程序仍中断执行
except:(异常名1,异常名2): #捕获异常1或异常2
except:异常名 as 数据 #捕获指定异常及附加数据
except:(异常名1,异常名2)as 数据: #捕获异常1或异常2及附加数据
4、dir(__builtins__) 命令会显示所有的预定义异常。
5、常用异常名:
AttributeError 调用不存在的方法引发的异常
EOFError 遇到文件末尾引发的异常
ImportError 导入模块出错引发的异常
IndexError 下标越界引发的异常
IOError I/O操作引发的异常,如打开文件出错
KeyError 使用字典中不存在的key引发的异常
NameError 使用不存在的变量名引发的异常
ValueError 搜索列表中不存在的值引发的异常
ZeroDivisionError 除数为0引发的异常
6、手工抛出异常
程序中可以使用raise语句来引发指定的异常,并向异常传递数据。
#raise几种使用方式
raise 异常名
raise 异常名,附加数据
raise 类名
正则表达式
re模块是python提供处理正则表达式的标准库
1、元字符是正则表达式中具有特点含义的字符,常用的元字符如下:
例如:
[a-z]{2,3} 表示匹配2个或3个字母组成的字符串
2、re.match()函数从字符串第一个字符开始匹配,而re.search()函数可以从字符串的任一个字符开始进行匹配。
import re
>>> s="Life can be good"
>>> print(re.match('can',s))
None #未匹配到,原因是match函数是从字符串第一个字符开始匹配
>>> print(re.search('can',s))
<re.Match object; span=(5, 8), match='can'> #匹配到
3、re.compile()函数将正则表达式编译生成一个RegexObject对象实例,然后通过这个对象实例对字符串进行操作。
>>> r=re.compile('go*d') #编译一个正则表达式对象,然后在下面使用
>>> r.match('Life can be good',12)
<re.Match object; span=(12, 16), match='good'>
4、园括号()可以将正则表达式分解成不同的组,在完成匹配后,匹配的分组结果为程序后续使用提供方便。
>>> import re
>>> s="电话:010-87654321"
>>> r=re.compile(r'(\d+)-(\d+)')
>>> m=r.search(s)
>>> m.groups()
('010', '87654321') #提取出区号和电话号码
>>> m.group(1)
'010'
5、分组扩展用法
(?P<组名>)为组设置名称,例如:
>>> import re
>>> s="电话:010-87654321"
>>> r=re.compile(r'(?P<Area>\d+)-(?P<No>\d+)')
>>> m=r.search(s)
>>> m.groupdict()
{'Area': '010', 'No': '87654321'} #设置组名分别为Area和No
匹配成功的分组方法有:
group() 参数为组的索引,返回字符串,当传递多个参数时返回值为元组
groups() 返回值为元祖
groupdict() 返回值为字典
start() 参数为组的索引,返回索引指定的组在字符串中的起始位置
end() 参数为组的索引,返回索引指定的组在字符串中的结束位置
span() 参数为组的索引,返回索引指定的组在字符串中的开始和结束位置