Python字符串
1.支持序列操作
eg:
s='abcd'
len(s) #4 s字符串可以當成序列
a=2
s[a] #c,其索引也支持表達式
s[-1] #d 反向索引
s(0:3) #分片操作,返回 abc,也支持負索引分片
#還有加號合併,重複
2.字符串的不可變性
在上述的操作中,沒有對原字符串做任何改變(包括加號合併,重複),因爲python字符串具有==不可變性==,即是在創建後不能就地改變,但是可以通過建立一個新的字符串以同一個變量名命名。
s='abcd'
s[0]=1 #出錯
a=s+'z' #s='abcd' a='abcdz' #注意此時s是不會變的
s=s+'k' #s='abcdk'
此外,具有不可變性的還有==數字==,==元組==
3.多行的字符串
python允許使用三個引號(單引號或雙引號)包括多行字符串常量,並在每行的末尾增加換行符。
eg:
可見,在每行的結束都加了一個換行符\n
,多行的字符創在html裏很有用
4.模式匹配
python中有個re模塊用於模式匹配,主要用於對字符串進行分割,查找和替換等操作,即是正則表達式
在使用時先導入re模塊.
常用的方法
- re.match(pattern, string, flags=0): re.match 嘗試從字符串的==起始位置==匹配一個模式,如果不是起始位置匹配成功的話,match()就返回none。
- re.search(pattern, string, flags=0):re.search 掃描整個字符串並返回第一個成功的匹配。
區別:re.match只匹配字符串的開始,如果字符串開始不符合正則表達式,則匹配失敗,函數返回None;而re.search匹配整個字符串,直到找到一個匹配。
eg:
>>> match=re.match('Hello[\t]*(.*)world','Hello Python world')
>>> match.group(0)
'Hello Python world'
>>> match.group(1)
' Python '
# Hello[\t]*(.*)world匹配Hello開頭,加多個製表符,多個非換行符字符 (.*) 表示一個組,非換行符組成的組,故結果中有 match.group(1)即是匹配到的組 python,結果中的第一個組即爲匹配到的結果。
關於組
正則中捕獲分組的概念,其實就是一個括號內的內容 如 “(\d)\d” 而”(\d)” 這就是一個捕獲分組,可以對捕獲分組進行 後向引用 (如果後而有相同的內容則可以直接引用前面定義的捕獲組,以簡化表達式) 如(\d)\d\1 這裏的”\1”就是對”(\d)”的後向引用
eg:
match=re.match('/(.*)/(.*)/(.*)','/usr/home/lumberjack');
此處的正則表達式定義了三個組,故匹配到的結果應該有四個組
- 整個結果
- 組1
- 組2
- 組3
故其結果爲:
>>> match.group(0)
'/usr/home/lumberjack'
>>> match.group(1)
'usr'
>>> match.group(2)
'home'
>>> match.group(3)
'lumberjack'
關於正則表達式推薦一篇博客,這裏