上一章數(shù)字類型提到字符串屬于不可變類型:不可變類型一旦創(chuàng)建將無法修改其本身,也就是無法修改內(nèi)存中的值拔妥,對它的所有操作(比如取絕對值)都是得到一個新的值,而不是在原來的內(nèi)存中進(jìn)行修改
字符串類型在任何編程語言里面都是最重要的數(shù)據(jù)類型彩扔,任何編程語言都有字符串類型称诗,Python中的字符串類型有很多的內(nèi)置函數(shù)和判別函數(shù),我們一一的總結(jié)和歸納
字符串類型
- 字符串的創(chuàng)建
在其他語言中有字符類型岩齿,在Python沒有字符類型太颤,單引號和雙引號包裹的都是字符串,切記沒有字符類型盹沈。字符串類型是一種序列類型龄章,說到序列,就是有順序的乞封,我們可以通過索引來取字符串中的數(shù)據(jù)做裙,并且可以用for循環(huán)遍歷字符串,這就涉及后面文章提到的可迭代對象肃晚,現(xiàn)在我們先不做具體解釋
//1.創(chuàng)建字符串十分簡單
a = "hello world"
b = 'hello world'
a和b所表示的都是字符串
- 訪問字符串
訪問字符串的方式是索引锚贱,首先索引就像序號一樣,通過這個序號我們直接可以取到字符串中的值关串,值得注意的是索引是從0開始拧廊,而不是從1開始,比如一個字符的長度(一共有多少個字符)是5晋修,那么它的索引范圍就是[0~4]吧碾,0的位置就是字符串的第一個字符,依次類推
a = "hello world"
print(a[1]) ----> 'e'
print(a[3]) ----> 'l'
print(a[5]) ----> ' ' //注意空格是空白字符墓卦,也是屬于字符串的一部分倦春,也要占一個位置
- 字符串切片
單一的索引只能找到一個字符,而不能找一串字符落剪,字符串可以利用切片的方式來找一串字符睁本,也就是子字符串,具體語法如下
a = "abcedfghijk"
語法格式
a[x:y] --> 取a中索引位置從x到y(tǒng)-1的所有字符
例如print(a[1:4])取得是索引為1,2,3的字符
print(a[1:4]) ----> "bce"
字符串的切片中還可以設(shè)置步長忠怖,也就是間隔距離,具體的語法格式如下
a = "abcdefg"
a[x:y:z] 取a中索引位置從x到y(tǒng)-1的所有字符 中間間隔z 沒有參數(shù)z的時候呢堰,默認(rèn)為1
例如print(a[0:5:2])取得是索引為0,2,4(中間間隔2)的字符
print(a[0:5:2]) ----> "ace"
上面的情況都是x,y,z都是正數(shù),我們提到的索引是從左至右的脑又,從0開始暮胧,但是還有一種方式是從右至左取的锐借,從右至左取的時候,右邊第一個字符的索引為-1往衷,第二個為-2钞翔,依次類推
a = "abcdefg"
print(a[-1]) ----> "g"
print(a[-2]) ----> "f"
- 字符串中的運(yùn)算符
字符串拼接 +
重復(fù)字符串 *
成員運(yùn)算符 in not in
a = "hello"
b = "world"
print(a+b) -----> "helloworld"
print(a*2) -----> "hellohello"
print("a" in a) -----> False
print("h" in a) -----> True
這里的False和True是布爾值,表示正確和錯誤的方式
- 字符串的格式化
三種基本格式化方式席舍,也是用得最多的%s(字符串) %f(浮點(diǎn)型) %d(整型)具體用法如下
//百分號后面的放入%s中
print("%s helllo world" % "dage") -----> "dage hello world"
//當(dāng)需要格式化兩個參數(shù)的時候布轿,百分號后面的數(shù)據(jù)用括號括起來,然后一一對應(yīng)就行
print("%s is %d years old" % ("www",25)) ----> "www is 25 years old"
- 字符串的內(nèi)置函數(shù)
字符串是Python中十分重要的數(shù)據(jù)類型,提供了大量的內(nèi)置函數(shù)進(jìn)行使用
//使用方法字符串.方法
a = ".........."
a.capitalize()//將字符串的第一個字符轉(zhuǎn)換為大寫
a.count(str, beg= 0,end=len(string))//返回 str 在 string 里面出現(xiàn)的次數(shù)来颤,如果 beg 或者 end 指定則返回指定范圍內(nèi) str 出現(xiàn)的次數(shù)
a.endswith(obj, beg=0, end=len(string))//檢查字符串是否以 obj 結(jié)束汰扭,如果beg 或者 end 指定則檢查指定的范圍內(nèi)是否以 obj 結(jié)束,如果是福铅,返回 True,否則返回 False.
b.startwith(obj, beg=0, end=len(string))//檢查字符串是否以 obj 開始萝毛,如果beg 或者 end 指定則檢查指定的范圍內(nèi)是否以 obj 開始,如果是滑黔,返回 True,否則返回 False.
a.find(str, beg=0 end=len(string)) //檢測 str 是否包含在字符串中笆包,如果指定范圍 beg 和 end ,則檢查是否包含在指定范圍內(nèi)略荡,如果包含返回開始的索引值庵佣,否則返回-1
a.index(str, beg=0, end=len(string))//跟find()方法一樣,只不過如果str不在字符串中會報(bào)一個異常.
a.isalnum()//如果字符串至少有一個字符并且所有字符都是字母或數(shù)字則返 回 True,否則返回 False
a.isalpha()//如果字符串至少有一個字符并且所有字符都是字母則返回 True, 否則返回 False
a.isdigit()//如果字符串只包含數(shù)字則返回 True 否則返回 False..
a.islower()//如果字符串中包含至少一個區(qū)分大小寫的字符汛兜,并且所有這些(區(qū)分大小寫的)字符都是小寫巴粪,則返回 True,否則返回 False
a.isspace()//如果字符串中只包含空白粥谬,則返回 True肛根,否則返回 False
a.isupper()//如果字符串中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是大寫帝嗡,則返回 True晶通,否則返回 False
a.replace(old, new [, max])//把將字符串中的 str1 替換成 str2,如果 max 指定,則替換不超過 max 次哟玷。
a.ljust(width[, fillchar])//返回一個原字符串左對齊,并使用 fillchar 填充至長度 width 的新字符串,fillchar 默認(rèn)為空格
a.rjust(width,[, fillchar])//返回一個原字符串右對齊,并使用fillchar(默認(rèn)空格)填充至長度 width 的新字符串
a.strip([chars])//在字符串上執(zhí)行 lstrip()和 rstrip()
a.split(str="", num=string.count(str))//num=string.count(str))以str為分隔符截取字符串一也,如果 num 有指定值巢寡,則僅截取 num 個子字符串
以上就是對于字符串的操作的一些概要,不一定完善椰苟,但是包含了大部分的問題抑月,不是每一個函數(shù)都要記住,當(dāng)忘記某個函數(shù)的時候查閱一下舆蝴,在寫程序的過程中記憶越來越深刻