正则表达式

1.    择一匹配:管道符号(|),表示从多个模式中选择其一。例:at|home à athome

2.    点号匹配除了换行符以外的任何字符

3.    边界匹配:\b匹配一个单词的边界;\B匹配在一个单词中间,即不是单词边界。

4.    字符集:匹配方括号中包含的任何字符。只适用于单字符的情况。例:[ab] à ab

5.    星号(*)匹配其左边出现零次或多次

加号(+)匹配一次或多次出现

问号(?)匹配零次或一次出现

6.    字符集特殊字符:\d表示匹配任何十进制数字

                            \w表示全部字母的字符集

                             \s表示空格字符

注:特殊字符的大写表示不匹配,例:\D表示任何非十进制数字

7.    圆括号指定分组和匹配子组,例:(\w+)-(\d+)

8.    匹配对象:group()groups().

9.    group():要么返回整个匹配对象,要么根据要求返回特定子组;groups()仅返回一个包含唯一或全部子组的元组。

10.match()search()区别:match()从字符串的起始部分开始匹配;search()不但会搜索起始部分,而且严格地对字符串从左到右搜索。

11.findall()查询字符串中某个正则表达式模式全部的非重复出现情况,返回的是一个列表

12.finditer()是与findall()类似但更节省内存的实体。区别:返回的是一个迭代器

13.搜索与替换:sub()subn()

  都是将某字符串中所有匹配正则表达式的部分进行某种形式的替换。区别:subn()还返回一个表示替换的总数。

函数

1.    *args 会把多传入的参数变成一个元组形式

2.    **kwargs 会把多传入的参数变成一个dict形式

3.    参数:

普通参数:严格按照顺序,将实参传给形参

默认参数:必须放置在参数列表的最后

指定参数:将参数赋值给指定的形参

动态参数:* 默认传入的参数,全部放置在元组中

                ** 默认传入的参数,全部放置在字典中

万能参数: *args, ** kwargs

4.    Python中,函数的参数传递,是引用,不是复制

5.    变量:

全局变量,所有作用域都可读。

对全局变量进行重新赋值,需要global,如:global name

特殊,对列表、字典,可修改,但不可重新赋值。

全局变量统一大写。

6.    三元运算(三目运算) 对 if else的简写

例:name = ‘alex’ if  1==1  else ‘SB’  

7. 闭包:

  闭包是一个函数,并且这个函数具有以下特点:

  • 定义在另外一个函数里面(嵌套函数)
  • 引用其所在函数环境的自由变量
例:关于一个抛物线的函数
#!/usr/bin/env python
# coding:utf-8

def parabola(a, b, c):
    def para(x):
        return a*x**2 + b*x + c
    return para

p = parabola(2, 3, 4)
print(p(5))  

内置函数

1. abs(): 绝对值

2. all(): 所有为真,才为真

3. any(): 又要有真就为真

4. ascii(): 自动执行对象的__repr__方法

5. bytes():  字符串转换成字节类型

  补充:字符编码

   对utf-8,一个汉字占三个字节

   对gbk,一个汉字占两个字节

   n = bytes('李杰',encoding='utf-8/gbk')
   bytes(要转换的字符串,编码类型)

6. str():  字节转换成字符串

str(bytes('李杰',encoding='utf-8'),encoding='utf-8')

7. map():   map(func,seq) 例:map(lambda x: x+3,[1,2,3,4]) à [4,5,6,7]

8. reduce(): 横着逐个元素进行运算。

  python3中,from functools import reduce 导入

例:计算1*2*3*4*5*6*7  
>> reduce(lambda x,y:x*y , [1,2,3,4,5,6,7])
>> 5040

9. zip(): zip()的参数是可迭代对象。 

例1:
    >>> colors = ["red", "green", "blue"]
    >>> values = [234, 12, 89, 65]
    >>> for col, val in zip(colors, values):
        ...     print ((col, val))     
        ... 
        ('red', 234)
        ('green', 12)
        ('blue', 89) 
例2:    
    >>> a = [1, 2, 3, 4, 5]
    >>> b = [2, 2, 9, 0, 9]
    >>>list(map(lambda pair: max(pair), zip(a, b))) 
    [2, 2, 9, 4, 9]

说明:zip()可以同时迭代多个序列,其创建出的结果是一个迭代器。通常用在需要将不同的数据配对在一起时。

10. iter(): 可以选择性接受一个无参的可调用对象以及一个哨兵(结束)值作为输入。

import sys
f = open(‘/etc/passwd’)
for chunk in iter(lambda: f.read(10), ‘’):
    n = sys.stdout,write(chunk)

  

文件操作

1.    x: 表示文件存在,报错,文件不存在,创建并写内容(python3,x中新增)

2.    a: 表追加

3.    自动关闭文件

with open(‘db.txt’,’r’) as f:
  pass 

4.    如果打开文件模式,无b,则 read按照字符

5.    read(): 无参数,读全部,有参数[b,按字节;无b,按字符]

6.    tell(): 当前指针所在的位置,永远是字节单位

7.    seek():  调整当前指针的位置,以字节为单位

8.    write(): 从当前指针位置向后覆盖

9.    fileno(): 文件描述符

10.flush(): 将缓冲区文件强制写入硬盘

11. truncate(): 根据指针位置进行截断,且指针后的内容清空

12. 将多个映射合并为单个映射:collections模块中的ChainMap类。ChainMap只是简单地维护一个记录底层映射关系的列表。

from collections import ChainMap
a = {'x': 1 , 'z' : 3}
b = {'y': 2 , 'z' : 4}

c = ChainMap(a,b)
print(c['x'])        #output 1 (from a)
print(c['y'])        #output 2 (from b)
print(c['z'])        #output 3 (from a)

>> del c['y']
...
KeyError: "Key not found in the first mapping: 'y'" 

说明:修改映射的操作总是会作用在列出的第一个映射结构上。

ChainMap与update()区别:

>>> a = {'x': 1 , 'z' : 3}
>>> b = {'y': 2 , 'z' : 4}
>>> merged = dict(b)
>>> merged.update(a)
>>> merged
{'x': 1, 'y': 2, 'z': 3}
#修改属性值后,不变
>>> a['x'] = 32
>>> merged
{'x': 1, 'y': 2, 'z': 3}
字典中update()合并

相关文章: