1.讀寫文件
#讀文件
try:
f = open(filename,'r')
print f.read()
finally:
if f:
f.close()
#按行來讀
for line in f.readlines():
print line
#用with
with open(filename,'r') as f:
print f.read()
#寫
f.write(str)
#文件還有一個__next__()方法,每次返回文件中的下一行
#這種是讀取文本文件的最佳方式,因爲不是一次性把文件加載到內存中
for line in open('data.txt'):
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
try:
input = open(filepath,'r')
except Exception as e:#出現異常
print e
else:#未出現異常
print input.read()
finally:#始終執行
f.close()
(2)with.. as
with open(filename,'r') as f:
f.read()
上下文管理器,有enter(),exit()方法。發生異常則調用默認的異常處理器處理
(3)assert
assert expression
表達式爲True,則繼續執行
表達式爲False,則中斷程序,調用默認的異常處理器
4.正則表達式
參考:
python正則表達式指南
正則表達式入門
(1)正則表達式匹配流程:
(2)正則表達式語法
(3)python re模塊
示例:
import re
key = "hello,world" #源字符串
p1 = r"hello" #正則表達式
pattern = re.compile(p1)#正則表達式編譯爲pattern對象
match = pattern.match(key)#匹配字符串
if match:
print match.group() #獲得匹配的分組
#也可以寫成,缺點是pattern沒法複用
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;截獲了多次的組返回最後一次截獲的子串。