1. 程式人生 > >python字串的常見操作

python字串的常見操作

1,字串
1.1,字串的建立和賦值
字串是python中最常見的資料型別,我們使用引號(單引號或者雙引號都可以)來建立字串

建立字串很簡單,只要給變數賦一個值即可,例如:

var1="hello,world!"

var2="helli,python!"

1.2,字串的索引和切片
python的下標就是編號,就好比超市中的儲存櫃的編號,通過這個編號就能找到相應的儲存空間,切片是指對操作物件擷取其中一部分的操作,字串,列表、元組都支援切片操作。

如果有字串:name = ‘abcdef’,在記憶體中的實際儲存如下:這裡寫圖片描述
如果想取出部分字元(或者叫元素),那麼可以通過下標的方法,(注意python中下標從 0 開始)

name="abcdef" #建立name變數並向其賦值

print(name[0])    #取出變數name中下標為0的字元,即為字元"a"

print(name[-1])    #取出變數name中最後一個字元,即字元"f"

print(len(name)-1)      #取出變數name中最後一個字元,即字元"f"

注:如果取用的下標大於字串長度-1,那麼python程式便會報錯

1.3 切片
切片是指從操作的物件擷取其中一部分的操作,字串、列表、元組都支援切片操作。

切片的語法:[起始點:結束點:步長],不指定步長則預設步長為1.

注意:選取的區間屬於左閉右開型,即從”起始”位開始,到”結束”位的前一位結束(不包含結束位本身)。

我們以字串為例講解。

如果取出一部分,則可以在中括號[]中使用:

name="abcdef"

print(name[0:3])    #擷取下標為0的字元到下標為2的字元,選取的區間屬於左閉右開區間,不包括下標為3的字元,故擷取的字元為"abc"

print(name[3:-1])  #從第三個字母取到倒數第二個字母為止,即為"de"

print(name[2:])          #擷取該字串下標為2的字元到該字元末尾,步長為1,即"cdef"

print(name[::])            #選取name所有的字元

print(name[2::2])         #擷取該字元下標為2的字元到其尾字元,步長為2,即"ce"
print(name[::-1]) #設定步長為-1,即將該字串逆序,得到的結果是"fedcba"

1.4 字串的常見操作
(1)find:從左向右查詢該字串在原字串中的位置,返回所在索引值,如果不在則返回-1
rfind:從左向右查詢該字串在原字串中的位置,返回所在索引值,如果不在則返回-1

name="this is test plaintext,this is ok!"

print(name.find("this"))        #程式返回結果為0,並且是從左向右開始查詢,找到第一個與查詢的字串相同時,即停止查詢並返回字元在原字元索引為0.

print(name.rfind("this"))        #程式返回值時23,表示查詢的時候是從右向左查詢,輸出下標的時則輸出的是從左向右所得到的下標

print(name.find("hello"))        #程式返回值為-1,即沒有在原字元內找到"hello"這個字元,故返回結果為-1

(2)index:與find()查詢方法一致,但如果沒有查詢到,則程式會報錯
rindex與rfind用法一致,但沒有查詢到,則程式報錯

name="this is test plaintext,this is ok!"

print(name.index("this"))      #程式返回值為0

print(name.index("hello"))        #程式報錯

(3)count:顯示查詢的字串在該字元內出現的次數

name="this is test plaintext,this is ok!"

print(name.count("this"))     #程式返回2,表示"this"在整個字串內出現了兩次

print(name.count("hello"))     #程式返回0,表示"hello"在整個字串內沒有出現

(4)replace:把 字串 中的 一部分字串 替換成 另一部分字串,並在螢幕上打印出來,但是並不改變原字串的內容(數字,字串,元組為不可變型別),如果 count 指定,則替換count次

name="this is test plaintext,this is ok!"

print(name.replace("test","TEST"))      #將該字串中的"test"替換成"TEST",並列印到螢幕上,但並未改變原字串的值

print(name.replace("this","THIS"))     #將該字串所有的"this"替換成"THIS",並列印到螢幕上,但並未改變原字串的值

print(name.replace("this","THIS",1))     # 將該字串的第一個"this"替換成"THIS",並列印到螢幕上,但並未改變原字串的值

(5)split:以制定的分隔符將字串分隔開來,生成元組,列印到螢幕上,但並不改變原字元的值

name="this is test plaintext,this is ok!"

print(name.split(" "))  #以空格為分隔符將該字串分隔開來,得到的結果是['this', 'is', 'test', 'plaintext,this', 'is', 'ok!']

print(name.split())    #如果不指定分隔符,那麼預設以空字元為分隔符,如果原字元中存在/t和空格,那麼都將會被去掉

(6)capitalize:把字串的第一個字元大寫

name="this is test plaintext,this is ok!"

print(name.capitalize())       # 輸出的結果是This is test plaintext,this is ok!

(7)title:把字串的每個單詞首字母大寫

name="this is test plaintext,this is ok!"

print(name.title())       # 輸出的結果是This Is Test Plaintext,This Is Ok!

(8)startswith:判斷該字串是否以規定的字串開頭的,如果是,返回True,如果否,返回False
endswith:判斷該字串是否以規定的字串結尾的,如果是,返回True,如果否,返回False

name="this is test plaintext,this is ok!"

print(name.startswith("this"))     #程式返回結果為True表示原字串以"this"這個字串開頭的

print(name.startswith("hello"))     #程式返回結果為False表示原字串不是以"hello"這個字串開頭的

print(name.endswith("!"))     #程式返回結果為True表示原字串以"!"這個字串結尾的

(9)lower:把原字串所有的大寫字元轉換成小寫字元
upper:把原字串所有的小寫字元轉換成大寫字元

name="This is test plaintext,this is ok!"

print(name.lower())  #結果是this is test plaintext,this is ok!

print(name.upper())  #結果是THIS IS TEST PLAINTEXT,THIS IS OK!

(10)ljust:將原字元左對齊,並使用空格填充至所規定的長度組成新的字串
rjust:將原字元右對齊,並使用空格填充至所規定的長度組成新的字串
center:將原字元居中,並使用空格填充至所規定的長度組成新的字串

mystr="hello"

mystr.ljust(20)        #得到的結果是:'hello             '即該字元與空格合起來總共20個字元長度

mystr.rjust(20)        #得到的結果是'                    hello',

mystr.center(20)        #得到的結果是'            hello            '

(11)lstrip:刪除字串左邊的空白字元
rstrip:刪除字串右邊的空白字元
strip:刪除字串所有的空白字元

舉例說明:

mystr="            hello            "

mystr.lstrip()                #輸出的結果為"hello          "

mystr.rstrip()                #輸出的結果為"                hello"

mystr.strip()                     #輸出的結果為 "hello"

(12)partition:將原字串內以括號裡指定的內容進行分隔,得到的結果為元組
rpartition:類似與partition,不過是從右邊開始

mystr="hello world! it is sunny  it is"

mystr.partition("it")        #得到的結果為('hello world! ', 'it', ' is sunny it is')

mystr.rpartition("it")        #得到的結果為('hello world! it is sunny ', 'it', ' is')

(13)isalpha:判斷原字串所有字元是否都是字母,如果是返回True,如果不是返回False

isdigit:判斷原字串所有字元是否都是數字,如果是返回True,如果不是返回False

isalnum:判斷原字串所有字元是否都是數字或者都是字母,如果是返回True,如果不是返回False

mystr="hello"

mystr.isalpha()    #返回結果為True

mystr.isdigit()        #返回結果為False

mystr.isalnum()        返回結果為True

(14)join:將一個列表轉換成字串,並且使用制定的分隔符連線,格式為
“分隔符”.join(儲存字串的變數名)

mystr=["hello","world","hello","python"]

".".join(mystr)  #首先將該列表轉換成字串,並使用小數點將其分隔開來得到的字串為:"hello.world.hello.python"

" ".join(mystr)    #得到的字串為"hello world hello python"