Python语法备忘(I)

逃离我推掉我的手 2022-06-10 13:10 266阅读 0赞

1.读写文件

这里写图片描述

  1. #读文件
  2. try:
  3. f = open(filename,'r')
  4. print f.read()
  5. finally:
  6. if f:
  7. f.close()
  8. #按行来读
  9. for line in f.readlines():
  10. print line
  11. #用with
  12. with open(filename,'r') as f:
  13. print f.read()
  14. #写
  15. f.write(str)
  16. #文件还有一个__next__()方法,每次返回文件中的下一行
  17. #这种是读取文本文件的最佳方式,因为不是一次性把文件加载到内存中
  18. for line in open('data.txt'):
  19. print(line,end='')

2.命名空间LEGB法则

命名空间—-对变量的分组划分
python中一切皆对象,c++中的变量名是内存地址的别名,而python中的变量名其实是一个字符串对象。
命名空间实际上是一个字典,{name:object}保存了变量名称到对象之间的映射关系。
LEGB规则规定了查找一个名称的顺序:local–>enclosing–>global–>build-in

Local–函数内的命名空间
Enclosing function locals–外部嵌套的函数的命名空间
Global–函数定义所在的模块的命名空间
Build-in–python内置模块的命名空间

3.异常处理机制

(1)try..except..finally..else

  1. try:
  2. input = open(filepath,'r')
  3. except Exception as e:#出现异常
  4. print e
  5. else:#未出现异常
  6. print input.read()
  7. finally:#始终执行
  8. f.close()

(2)with.. as

  1. with open(filename,'r') as f:
  2. f.read()

上下文管理器,有enter(),exit()方法。发生异常则调用默认的异常处理器处理
(3)assert

  1. assert expression

表达式为True,则继续执行
表达式为False,则中断程序,调用默认的异常处理器

4.正则表达式

参考:
python正则表达式指南
正则表达式入门
(1)正则表达式匹配流程
这里写图片描述
(2)正则表达式语法
这里写图片描述
(3)python re模块
示例:

  1. import re
  2. key = "hello,world" #源字符串
  3. p1 = r"hello" #正则表达式
  4. pattern = re.compile(p1)#正则表达式编译为pattern对象
  5. match = pattern.match(key)#匹配字符串
  6. if match:
  7. print match.group() #获得匹配的分组
  8. #也可以写成,缺点是pattern没法复用
  9. re.match(r'hello', 'hello world!')

re.compile(strPattern[, flag]) — 用于将正则表达式字符串编译为pattern对象
第二个参数flag是匹配模式,比如re.compile(‘pattern’, re.I | re.M)

pattern对象
pattern对象是一个编译好的正则表达式
方法:
match(string[, pos[, endpos]]) | re.match(pattern, string[, flags]):
是否在字符串刚开始的位置匹配。注意:这个方法并不是完全匹配。当pattern结束时若string还有剩余字符,仍然视为成功。想要完全匹配,可以在表达式末尾加上边界匹配符’$’。

search(string[, pos[, endpos]]) | re.search(pattern, string[, flags]):
字符串内查找模式匹配,只要找到第一个匹配然后返回;如果字符串没有匹配,则返回None。
pos和endpos的默认值分别为0和len(string));re.search()无法指定这两个参数

re.findall(pattern, string[, flags])
遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表

re.match与re.search与re.findall的区别:

re.match**只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;re.search匹配整个字符串,直到找到一个匹配**。
re.findall遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表

Match对象
match对象是一次匹配的结果,包含了很多关于此次匹配的信息
属性:
string–匹配时使用的字符串
re–pattern对象
pos–字符串中pattern开始搜索的索引
endpos–结束搜索的索引
lastindex–最后一个被捕获的分组的索引
lastgroup–最后一个被捕获的分组的别名
方法:
group([group1, …]):
获得一个或多个分组截获的字符串;指定多个参数时将以元组形式返回。group1可以使用编号也可以使用别名;编号0代表整个匹配的子串;不填写参数时,返回group(0);没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串。

发表评论

表情:
评论列表 (有 0 条评论,266人围观)

还没有评论,来说两句吧...

相关阅读