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 |
在創建對象時使用的模式 |