5-22 8,940 views
-
-
Python 的各种符号
Table 1.1. Python命令行选项
选项 作用 -c cmd 在命令行直接执行python代码。如python -c ‘print “hello world”‘。 -d 脚本编译后从解释器产生调试信息。同PYTHONDEBUG=1。 -E 忽略环境变量。 -h 显示python命令行选项帮助信息。 -i 脚本执行后马上进入交互命令行模式。同PYTHONINSPECT=1。 -O 在执行前对解释器产生的字节码进行优化。同 PYTHONOPTIMIZE=1。 -OO 在执行前对解释器产生的字节码进行优化,并删除优化代码中的嵌入式文档字符串。 -Q arg 除法规则选项,-Qold(default),-Qwarn,-Qwarnall,-Qnew。 -S 解释器不自动导入site.py模块。 -t 当脚本的tab缩排格式不一致时产生警告。 -u 不缓冲stdin、stdout和stderr,默认是缓冲的。同PYTHONUNBUFFERED=1。 -v 产生每个模块的信息。如果两个-v选项,则产生更详细的信息。同PYTHONVERBOSE=x。 -V 显示Python的版本信息。 -W arg 出错信息控制。(arg is action:message:category:module:lineno) -x 忽略源文件的首行。要在多平台上执行脚本时有用。 file 执行file里的代码。 – 从stdin里读取执行代码。 Table 2.1. Python运算符列表
运算符 描述 x+y,x-y 加、减,“+”号可重载为连接符 x*y,x**y,x/y,x%y 相乘、求平方、相除、求余,“*”号可重载为重复,“%”号可重载为格式化 <,<=,>,>=,==,<>,!= 比较运算符 +=,-=,*=,/=,%=,**=,<<=,>>=,&=,^=,|= 自变运算符 x|y 按位或 x^y 按位异或 x&y 按位与 ~x 按位取反 x<<,x>>y x向左或向右移y位 is, is not 等同测试 in, not in 是否为成员测试 or,and,not 逻辑运算符 x[i],x[i:j],x.y,x(…) 索引,分片,限定引用,函数调用 (…),[…],{…},’…’ 元组,列表,字典,转化为字符串 Table 2.2. 运算符优先顺序列表(从最高到最低)
运算符 描述 ‘expr’ 字符串转换 {key:expr,…} 字典 [expr1,expr2…] 列表 (expr1,expr2,…) 元组 function(expr,…) 函数调用 x[index:index] 切片 x[index] 下标索引取值 x.attribute 属性引用 ~x 按位取反 +x,-x 正,负 x**y 幂 x*y,x/y,x%y 乘,除,取模 x+y,x-y 加,减 x<<y,x>>y 移位 x&y 按位与 x^y 按位异或 x|y 按位或 x<y,x<=y,x==y,x!=y,x>=y,x>y 比较 x is y,x is not y 等同测试 x in y,x not in y 成员判断 not x 逻辑否 x and y 逻辑与 x or y 逻辑或 lambda arg,…:expr Lambda匿名函数 Table 2.3.
对象/常量 值 “” 假 “string” 真 0 假 >=1 真 <=-1 真 ()空元组 假 []空列表 假 {}空字典 假 None 假 Table 3.1. 字符串格式化代码
格式 描述 %% 百分号标记 %c 字符及其ASCII码 %s 字符串 %d 有符号整数(十进制) %u 无符号整数(十进制) %o 无符号整数(八进制) %x 无符号整数(十六进制) %X 无符号整数(十六进制大写字符) %e 浮点数字(科学计数法) %E 浮点数字(科学计数法,用E代替e) %f 浮点数字(用小数点符号) %g 浮点数字(根据值的大小采用%e或%f) %G 浮点数字(类似于%g) %p 指针(用十六进制打印值的内存地址) %n 存储输出字符的数量放进参数列表的下一个变量中 Table 3.2. python支持的转义字符表
转义字符 描述 \(在行尾时) 续行符 \\ 反斜杠符号 \’ 单引号 \” 双引号 \a 响铃 \b 退格(Backspace) \e 转义 \000 空 \n 换行 \v 纵向制表符 \t 横向制表符 \r 回车 \f 换页 \oyy 八进制数yy代表的字符,例如:\o12代表换行 \xyy 十进制数yy代表的字符,例如:\x0a代表换行 \other 其它的字符以普通格式输出 - Table 3.3. 列表对象支持的方法
方法 描述 append(x) 在列表尾部追加单个对象x。使用多个参数会引起异常。 count(x) 返回对象x在列表中出现的次数。 extend(L) 将列表L中的表项添加到列表中。返回None。 Index(x) 返回列表中匹配对象x的第一个列表项的索引。无匹配元素时产生异常。 insert(i,x) 在索引为i的元素前插入对象x。如list.insert(0,x)在第一项前插入对象。返回None。 pop(x) 删除列表中索引为x的表项,并返回该表项的值。若未指定索引,pop返回列表最后一项。 remove(x) 删除列表中匹配对象x的第一个元素。匹配元素时产生异常。返回None。 reverse() 颠倒列表元素的顺序。 sort() 对列表排序,返回none。bisect模块可用于排序列表项的添加和删除。 Table 3.4. 字典方法
方法 描述 has_key(x) 如果字典中有键x,则返回真。 keys() 返回字典中键的列表 values() 返回字典中值的列表。 items() 返回tuples的列表。每个tuple由字典的键和相应值组成。 clear() 删除字典的所有条目。 copy() 返回字典高层结构的一个拷贝,但不复制嵌入结构,而只复制对那些结构的引用。 update(x) 用字典x中的键值对更新字典内容。 get(x[,y]) 返回键x,若未找到该键返回none,若提供y,则未找到x时返回y。 Table 3.5. 数组类型代码
代码 等价的C类型 以字节为单位的最小尺寸 c char 1 b(B) byte(unsigned byte) 1 h(H) short(unsigned short) 2 i(I) int(unsigned int) 2 l(L) long(unsigned long) 4 f float 4 d double 8 Table 9.1. mode
模式 描述 r 以读方式打开文件,可读取文件信息。 w 以写方式打开文件,可向文件写入信息。 a 以追加方式打开文件,文件指针自动移到文件尾。 r+ 以读写方式打开文件,可对文件进行读和写操作。 w+ 消除文件内容,然后以读写方式打开文件。 a+ 以读写方式打开文件,并把文件指针移到文件尾。 b 以二进制模式打开文件,而不是以文本模式。该模式只对Windows或Dos有效,类Unix的文件是用二进制模式进行操作的。 Table 9.2. bufsize
bufsize取值 描述 0 禁用缓冲 1 行缓冲 >1 指定缓冲区的大小 <1 系统默认的缓冲区大小 open()函数返回一个文件对象,我们可通过read()或write()函数对文件进行读写操作,下面是一些文件对象方法:
Table 9.3. 文件对象方法
方法 描述 f.close() 关闭文件,记住用open()打开文件后一定要记得关闭它,否则会占用系统的可打开文件句柄数。 f.fileno() 获得文件描述符 f.flush() 刷新输出缓存 f.isatty() 如果文件是一个交互终端,则返回True,否则返回False。 f.read([count]) 读出文件,如果有count,则读出count个字节。 f.readline() 读出一行信息。 f.readlines() 读出所有行,也就是读出整个文件的信息。 f.seek(offset[,where]) 把文件指针移动到相对于where的offset位置。offset为0表示文件开始处,这是默认值 ;1表示当前位置;2表示文件结尾。 f.tell() 获得文件指针位置。 f.truncate([size]) 截取文件,使文件的大小为size。 f.write(string) 把string字符串写入文件。 f.writelines(list) 把list中的字符串一行一行地写入文件。 Table 10.1. 正则表达式基本字符
字符 描述 text 匹配text字符串 . 匹配除换行符之外的任意一个单个字符 ^ 匹配一个字符串的开头 $ 匹配一个字符串的末尾 在正则表达式中,我们还可用匹配限定符来约束匹配的次数。
Table 10.2. 匹配限定符
最大匹配 最小匹配 描述 * *? 重复匹配前表达式零次或多次 + +? 重复匹配前表达式一次或多次 ? ?? 重复匹配前表达式零次或一次 {m} {m}? 精确重复匹配前表达式m次 {m,} {m,}? 至少重复匹配前表达式m次 {m,n} {m,n}? 至少重复匹配前表达式m次,至多重复匹配前表达式n次 据上所述,”.*”为最大匹配,能匹配源字符串所有能匹配的字符串。”.*?”为最小匹配,只匹配第一次出现的字符串。如:d.*g能匹配任意以d开头,以g结尾的字符串,如”debug”和”debugging”,甚至”dog is walking”。而d.*?g只能匹配”debug”,在”dog is walking”字符串中,则只匹配到”dog “。
在一些更复杂的匹配中,我们可用到组和运算符。
Table 10.3. 组和运算符
组 描述 […] 匹配集合内的字符,如[a-z],[1-9]或[,./;’] [^…] 匹配除集合外的所有字符,相当于取反操作 A|B 匹配表达式A或B,相当于OR操作 (…) 表达式分组,每对括号为一组,如([a-b]+)([A-Z]+)([1-9]+) \number 匹配在number表达式组内的文本 有一组特殊的字符序列,用来匹配具体的字符类型或字符环境。如\b匹配字符边界,food\b匹配”food”、”zoofood”,而和”foodies”不匹配。
Table 10.4. 特殊字符序列
字符 描述 \A 只匹配字符串的开始 \b 匹配一个单词边界 \B 匹配一个单词的非边界 \d 匹配任意十进制数字字符,等价于r'[0-9]’ \D 匹配任意非十进制数字字符,等价于r'[^0-9]’ \s 匹配任意空格字符(空格符、tab制表符、换行符、回车、换页符、垂直线符号) \S 匹配任意非空格字符 \w 匹配任意字母数字字符,等价于[a-zA-Z0-9_]。注意,包含’_’字符。 \W 匹配任意非字母数字字符,等价于[^a-zA-Z0-9_]。 \Z 仅匹配字符串的尾部 \\ 匹配反斜线字符 有一套声明(assertion)对具体事件进行声明。
Table 10.5. 正则表达式声明
声明 描述 (?iLmsux) 匹配空字符串,iLmsux字符对应下表的正则表达式修饰符。 (?:…) 匹配圆括号内定义的表达式,但不填充字符组表。 (?P<name>) 匹配圆括号内定义的表达式,但匹配的表达式还可用作name标识的符号组。 (?P=name) 匹配所有与前面命名的字符组相匹配的文本。 (?#…) 引入注释,忽略圆括号内的内容。 (?=…) 如果所提供的文本与下一个正则表达式元素匹配,这之间没有多余的文本就匹配。这允许在一个表达式中进行超前操作,而不影响正则表达式其余部分的分析。如”Martin”其后紧跟”Brown”,则”Martin(?=Brown)”就只与”Martin”匹配。 (?!…) 仅当指定表达式与下一个正则表达式元素不匹配时匹配,是(?=…)的反操作。 (?<=…) 如果字符串当前位置的前缀字符串是给定文本,就匹配,整个表达式就在当前位置终止。如(?<=abc)def表达式与”abcdef”匹配。这种匹配是对前缀字符数量的精确匹配。 (?<!…) 如果字符串当前位置的前缀字符串不是给定的正文,就匹配,是(?<=…)的反操作。 正则表达式还支持一些处理标志,它会影响正则式的执行方法。
Table 10.6. 处理标志
标志 描述 I或IGNORECASE 忽略表达式的大小写来匹配文本。 Table 10.7. MatchObject对象方法
方法 描述 expand(template) 展开模板中用反斜线定义的内容。 m.group([group,…]) 返回匹配的文本,是个元组。此文本是与给定group或由其索引数字定义的组匹配的文本,如果没有组定组名,则返回所有匹配项。 m.groups([default]) 返回一个元组,该元组包含模式中与所有组匹配的文本。如果给出default参数,default参数值就是与给定表达式不匹配的组的返回值。default参数的默认取值为None。 m.groupdict([default]) 返回一个字典,该字典包含匹配的所有子组。如果给出default参数,其值就是那些不匹配组的返回值。default参数的默认取值为None。 m.start([group]) 返回指定group的开始位置,或返回全部匹配的开始位置。 m.end([group]) 返回指定group的结束位置,或返回全部匹配的结束位置。 m.span([group]) 返回两元素组,此元组等价于关于一给定组或一个完整匹配表达式的(m.start(group),m.end(group)))列表 m.pos 传递给match()或search()函数的pos值。 m.endpos 传递给match()或search()函数的endpos值。 m.lastindex m.lastgroup m.re 创建这个MatchObject对象的正则式对象 m.string 提供给match()或search()函数的字符串。 Table 10.8. 正则式对象方法/属性
方法/属性 描述 r.search(string[,pos[,endpos]]) 同search()函数,但此函数允许指定搜索的起点和终点 r.match(string[,pos[,endpos]]) 同match()函数,但此函数允许指定搜索的起点和终点 r.split(string[,max]) 同split()函数 r.findall(string) 同findall()函数 r.sub(replace,string[,count]) 同sub()函数 r.subn(replace,string[,count]) 同subn()函数 r.flags 创建对象时定义的标志 r.groupindex 将r'(?Pid)’定义的符号组名字映射为组序号的字典 r.pattern 在创建对象时使用的模式
-