body
{
font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif;
font-size: 10.5pt;
line-height: 1.5;
}
html, body
{
}
h1 {
font-size:1.5em;
font-weight:bold;
}
h2 {
font-size:1.4em;
font-weight:bold;
}
h3 {
font-size:1.3em;
font-weight:bold;
}
h4 {
font-size:1.2em;
font-weight:bold;
}
h5 {
font-size:1.1em;
font-weight:bold;
}
h6 {
font-size:1.0em;
font-weight:bold;
}
img {
border:0;
max-width: 100%;
}
blockquote {
margin-top:0px;
margin-bottom:0px;
}
table {
border-collapse:collapse;
border:1px solid #bbbbbb;
}
td {
border-collapse:collapse;
border:1px solid #bbbbbb;
}
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的文件是用二进制模式进行操作的。 |
bufsize取值 |
描述 |
0 |
禁用缓冲 |
1 |
行缓冲 |
>1 |
指定缓冲区的大小 |
<1 |
系统默认的缓冲区大小 |
open()函数返回一个文件对象,我们可通过read()或write()函数对文件进行读写操作,下面是一些文件对象方法:
方法 |
描述 |
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字符串 |
. |
匹配除换行符之外的任意一个单个字符 |
^ |
匹配一个字符串的开头 |
$ |
匹配一个字符串的末尾 |
在正则表达式中,我们还可用匹配限定符来约束匹配的次数。
最大匹配 |
最小匹配 |
描述 |
* |
*? |
重复匹配前表达式零次或多次 |
+ |
+? |
重复匹配前表达式一次或多次 |
? |
?? |
重复匹配前表达式零次或一次 |
{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 "。
在一些更复杂的匹配中,我们可用到组和运算符。
组 |
描述 |
[...] |
匹配集合内的字符,如[a-z],[1-9]或[,./;'] |
[^...] |
匹配除集合外的所有字符,相当于取反操作 |
A|B |
匹配表达式A或B,相当于OR操作 |
(...) |
表达式分组,每对括号为一组,如([a-b]+)([A-Z]+)([1-9]+) |
\number |
匹配在number表达式组内的文本 |
有一组特殊的字符序列,用来匹配具体的字符类型或字符环境。如\b匹配字符边界,food\b匹配"food"、"zoofood",而和"foodies"不匹配。
字符 |
描述 |
\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)对具体事件进行声明。
声明 |
描述 |
(?iLmsux) |
匹配空字符串,iLmsux字符对应下表的正则表达式修饰符。 |
(?:...) |
匹配圆括号内定义的表达式,但不填充字符组表。 |
(?P<name>) |
匹配圆括号内定义的表达式,但匹配的表达式还可用作name标识的符号组。 |
(?P=name) |
匹配所有与前面命名的字符组相匹配的文本。 |
(?#...) |
引入注释,忽略圆括号内的内容。 |
(?=...) |
如果所提供的文本与下一个正则表达式元素匹配,这之间没有多余的文本就匹配。这允许在一个表达式中进行超前操作,而不影响正则表达式其余部分的分析。如"Martin"其后紧跟"Brown",则"Martin(?=Brown)"就只与"Martin"匹配。 |
(?!...) |
仅当指定表达式与下一个正则表达式元素不匹配时匹配,是(?=...)的反操作。 |
(?<=...) |
如果字符串当前位置的前缀字符串是给定文本,就匹配,整个表达式就在当前位置终止。如(?<=abc)def表达式与"abcdef"匹配。这种匹配是对前缀字符数量的精确匹配。 |
(?<!...) |
如果字符串当前位置的前缀字符串不是给定的正文,就匹配,是(?<=...)的反操作。 |
正则表达式还支持一些处理标志,它会影响正则式的执行方法。
标志 |
描述 |
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 |
在创建对象时使用的模式 |