Python語法備忘(I)

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;截獲了多次的組返回最後一次截獲的子串。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章