1,字符串
1.1,字符串的創(chuàng)建和賦值
字符串是python中最常見(jiàn)的數(shù)據(jù)類型,我們使用引號(hào)(單引號(hào)或者雙引號(hào)都可以)來(lái)創(chuàng)建字符串
創(chuàng)建字符串很簡(jiǎn)單,只要給變量賦一個(gè)值即可,例如:
var1="hello,world!"
var2="helli,python!"
1.2,字符串的索引和切片
python的下標(biāo)就是編號(hào),就好比超市中的存儲(chǔ)柜的編號(hào)饭冬,通過(guò)這個(gè)編號(hào)就能找到相應(yīng)的存儲(chǔ)空間侥蒙,切片是指對(duì)操作對(duì)象截取其中一部分的操作缩多,字符串,列表动羽、元組都支持切片操作。
如果有字符串:name = 'abcdef',在內(nèi)存中的實(shí)際存儲(chǔ)如下:
如果想取出部分字符(或者叫元素)纱意,那么可以通過(guò)下標(biāo)的方法,(注意python中下標(biāo)從 0 開(kāi)始)
name="abcdef" #創(chuàng)建name變量并向其賦值
?print(name[0])? ? #取出變量name中下標(biāo)為0的字符,即為字符"a"
print(name[-1])? ? #取出變量name中最后一個(gè)字符,即字符"f"
print(len(name)-1)? ? ? #取出變量name中最后一個(gè)字符,即字符"f"
注:如果取用的下標(biāo)大于字符串長(zhǎng)度-1,那么python程序便會(huì)報(bào)錯(cuò)
1.3 切片
切片是指從操作的對(duì)象截取其中一部分的操作,字符串枫虏、列表妇穴、元組都支持切片操作。
切片的語(yǔ)法:[起始點(diǎn):結(jié)束點(diǎn):步長(zhǎng)],不指定步長(zhǎng)則默認(rèn)步長(zhǎng)為1.
注意:選取的區(qū)間屬于左閉右開(kāi)型隶债,即從"起始"位開(kāi)始腾它,到"結(jié)束"位的前一位結(jié)束(不包含結(jié)束位本身)。
我們以字符串為例講解死讹。
如果取出一部分瞒滴,則可以在中括號(hào)[]中使用:
name="abcdef"
print(name[0:3])? ? #截取下標(biāo)為0的字符到下標(biāo)為2的字符,選取的區(qū)間屬于左閉右開(kāi)區(qū)間,不包括下標(biāo)為3的字符,故截取的字符為"abc"
print(name[3:-1])? #從第三個(gè)字母取到倒數(shù)第二個(gè)字母為止,即為"de"
print(name[2:])? ? ? ? ? #截取該字符串下標(biāo)為2的字符到該字符末尾,步長(zhǎng)為1,即"cdef"
print(name[::])? ? ? ? ? ? #選取name所有的字符
print(name[2::2])? ? ? ? ?#截取該字符下標(biāo)為2的字符到其尾字符,步長(zhǎng)為2,即"ce"
print(name[::-1])? ? ? ? #設(shè)置步長(zhǎng)為-1,即將該字符串逆序,得到的結(jié)果是"fedcba"
1.4 字符串的常見(jiàn)操作
(1)find:從左向右查找該字符串在原字符串中的位置,返回所在索引值,如果不在則返回-1
? ? ?rfind:從左向右查找該字符串在原字符串中的位置赞警,返回所在索引值,如果不在則返回-1
name="this is test plaintext,this is ok!"
print(name.find("this"))? ? ? ? #程序返回結(jié)果為0,并且是從左向右開(kāi)始查找,找到第一個(gè)與查找的字符串相同時(shí),即停止查詢并返回字符在原字符索引為0.
print(name.rfind("this"))? ? ? ? #程序返回值時(shí)23,表示查找的時(shí)候是從右向左查找,輸出下標(biāo)的時(shí)則輸出的是從左向右所得到的下標(biāo)
print(name.find("hello"))? ? ? ? #程序返回值為-1,即沒(méi)有在原字符內(nèi)找到"hello"這個(gè)字符,故返回結(jié)果為-1
(2)index:與find()查找方法一致,但如果沒(méi)有查找到,則程序會(huì)報(bào)錯(cuò)
? ? rindex與rfind用法一致,但沒(méi)有查找到,則程序報(bào)錯(cuò)
name="this is test plaintext,this is ok!"
print(name.index("this"))? ? ? #程序返回值為0
print(name.index("hello"))? ? ? ? #程序報(bào)錯(cuò)
(3)count:顯示查找的字符串在該字符內(nèi)出現(xiàn)的次數(shù)
name="this is test plaintext,this is ok!"
print(name.count("this"))? ? ?#程序返回2,表示"this"在整個(gè)字符串內(nèi)出現(xiàn)了兩次
print(name.count("hello"))? ? ?#程序返回0,表示"hello"在整個(gè)字符串內(nèi)沒(méi)有出現(xiàn)
(4)replace:把 字符串 中的 一部分字符串 替換成 另一部分字符串,并在屏幕上打印出來(lái),但是并不改變?cè)址膬?nèi)容(數(shù)字,字符串,元組為不可變類型),如果 count 指定妓忍,則替換count次
name="this is test plaintext,this is ok!"
print(name.replace("test","TEST"))? ? ? #將該字符串中的"test"替換成"TEST",并打印到屏幕上,但并未改變?cè)址闹?/p>
print(name.replace("this","THIS"))? ? ?#將該字符串所有的"this"替換成"THIS",并打印到屏幕上,但并未改變?cè)址闹?/p>
print(name.replace("this","THIS",1))? ? ?#?將該字符串的第一個(gè)"this"替換成"THIS",并打印到屏幕上,但并未改變?cè)址闹?/p>
(5)split:以制定的分隔符將字符串分隔開(kāi)來(lái),生成元組,打印到屏幕上,但并不改變?cè)址闹?/h4>
name="this is test plaintext,this is ok!"
print(name.split(" "))? #以空格為分隔符將該字符串分隔開(kāi)來(lái),得到的結(jié)果是['this', 'is', 'test', 'plaintext,this', 'is', 'ok!']
print(name.split())? ? #如果不指定分隔符,那么默認(rèn)以空字符為分隔符,如果原字符中存在/t和空格,那么都將會(huì)被去掉
(6)capitalize:把字符串的第一個(gè)字符大寫
name="this is test plaintext,this is ok!"
print(name.capitalize())? ? ? ?# 輸出的結(jié)果是This is test plaintext,this is ok!
(7)title:把字符串的每個(gè)單詞首字母大寫
name="this is test plaintext,this is ok!"
print(name.title())? ? ? ?# 輸出的結(jié)果是This Is Test Plaintext,This Is Ok!
(8)startswith:判斷該字符串是否以規(guī)定的字符串開(kāi)頭的,如果是,返回True,如果否,返回False
? ? endswith:判斷該字符串是否以規(guī)定的字符串結(jié)尾的,如果是,返回True,如果否,返回False
name="this is test plaintext,this is ok!"
print(name.startswith("this"))? ? ?#程序返回結(jié)果為True表示原字符串以"this"這個(gè)字符串開(kāi)頭的
print(name.startswith("hello"))? ? ?#程序返回結(jié)果為False表示原字符串不是以"hello"這個(gè)字符串開(kāi)頭的
print(name.endswith("!"))? ? ?#程序返回結(jié)果為True表示原字符串以"!"這個(gè)字符串結(jié)尾的
(9)lower:把原字符串所有的大寫字符轉(zhuǎn)換成小寫字符
? ? upper:把原字符串所有的小寫字符轉(zhuǎn)換成大寫字符
name="This is test plaintext,this is ok!"
print(name.lower())? #結(jié)果是this is test plaintext,this is ok!
print(name.upper())? #結(jié)果是THIS IS TEST PLAINTEXT,THIS IS OK!
(10)ljust:將原字符左對(duì)齊,并使用空格填充至所規(guī)定的長(zhǎng)度組成新的字符串
? ? ? rjust:將原字符右對(duì)齊,并使用空格填充至所規(guī)定的長(zhǎng)度組成新的字符串
? ? ? center:將原字符居中,并使用空格填充至所規(guī)定的長(zhǎng)度組成新的字符串
mystr="hello"
mystr.ljust(20)? ? ? ? #得到的結(jié)果是:'hello???????????? '即該字符與空格合起來(lái)總共20個(gè)字符長(zhǎng)度
mystr.rjust(20)? ? ? ? #得到的結(jié)果是'? ? ? ? ? ? ? ? ? ? hello',
mystr.center(20)? ? ? ? #得到的結(jié)果是'????????????hello? ? ? ? ? ? '
(11)lstrip:刪除字符串左邊的空白字符
? ? ? ? rstrip:刪除字符串右邊的空白字符
? ??????strip:刪除字符串所有的空白字符
mystr="????????????hello? ? ? ? ? ? "
mystr.lstrip()? ? ? ? ? ? ? ? #輸出的結(jié)果為"hello????????? "
mystr.rstrip()? ? ? ? ? ? ? ? #輸出的結(jié)果為"????????????????hello"
mystr.strip()?????????????????????#輸出的結(jié)果為 "hello"
(12)partition:將原字符串內(nèi)以括號(hào)里指定的內(nèi)容進(jìn)行分隔,得到的結(jié)果為元組
? ?????rpartition:類似與partition,不過(guò)是從右邊開(kāi)始
mystr="hello world!?it is sunny? it is"
mystr.partition("it")????????#得到的結(jié)果為('hello world! ', 'it', ' is sunny it is')
mystr.rpartition("it")????????#得到的結(jié)果為('hello world! it is sunny ', 'it', ' is')
(13)isalpha:判斷原字符串所有字符是否都是字母,如果是返回True,如果不是返回False
? ??????isdigit:判斷原字符串所有字符是否都是數(shù)字,如果是返回True,如果不是返回False
? ??????isalnum:判斷原字符串所有字符是否都是數(shù)字或者都是字母,如果是返回True,如果不是返回False
mystr="hello"
mystr.isalpha()? ? #返回結(jié)果為True
mystr.isdigit()????????#返回結(jié)果為False
mystr.isalnum()? ? ? ? 返回結(jié)果為True
(14)join:將一個(gè)列表轉(zhuǎn)換成字符串,并且使用制定的分隔符連接,格式為
"分隔符".join(存儲(chǔ)字符串的變量名)
mystr=["hello","world","hello","python"]
".".join(mystr)? #首先將該列表轉(zhuǎn)換成字符串,并使用小數(shù)點(diǎn)將其分隔開(kāi)來(lái)得到的字符串為:"hello.world.hello.python"
" ".join(mystr)? ? #得到的字符串為"hello world hello python"
name="this is test plaintext,this is ok!"
print(name.split(" "))? #以空格為分隔符將該字符串分隔開(kāi)來(lái),得到的結(jié)果是['this', 'is', 'test', 'plaintext,this', 'is', 'ok!']
print(name.split())? ? #如果不指定分隔符,那么默認(rèn)以空字符為分隔符,如果原字符中存在/t和空格,那么都將會(huì)被去掉
name="this is test plaintext,this is ok!"
print(name.capitalize())? ? ? ?# 輸出的結(jié)果是This is test plaintext,this is ok!
name="this is test plaintext,this is ok!"
print(name.title())? ? ? ?# 輸出的結(jié)果是This Is Test Plaintext,This Is Ok!
name="this is test plaintext,this is ok!"
print(name.startswith("this"))? ? ?#程序返回結(jié)果為True表示原字符串以"this"這個(gè)字符串開(kāi)頭的
print(name.startswith("hello"))? ? ?#程序返回結(jié)果為False表示原字符串不是以"hello"這個(gè)字符串開(kāi)頭的
print(name.endswith("!"))? ? ?#程序返回結(jié)果為True表示原字符串以"!"這個(gè)字符串結(jié)尾的
name="This is test plaintext,this is ok!"
print(name.lower())? #結(jié)果是this is test plaintext,this is ok!
print(name.upper())? #結(jié)果是THIS IS TEST PLAINTEXT,THIS IS OK!
mystr="hello"
mystr.ljust(20)? ? ? ? #得到的結(jié)果是:'hello???????????? '即該字符與空格合起來(lái)總共20個(gè)字符長(zhǎng)度
mystr.rjust(20)? ? ? ? #得到的結(jié)果是'? ? ? ? ? ? ? ? ? ? hello',
mystr.center(20)? ? ? ? #得到的結(jié)果是'????????????hello? ? ? ? ? ? '
mystr="????????????hello? ? ? ? ? ? "
mystr.lstrip()? ? ? ? ? ? ? ? #輸出的結(jié)果為"hello????????? "
mystr.rstrip()? ? ? ? ? ? ? ? #輸出的結(jié)果為"????????????????hello"
mystr.strip()?????????????????????#輸出的結(jié)果為 "hello"
mystr="hello world!?it is sunny? it is"
mystr.partition("it")????????#得到的結(jié)果為('hello world! ', 'it', ' is sunny it is')
mystr.rpartition("it")????????#得到的結(jié)果為('hello world! it is sunny ', 'it', ' is')
mystr="hello"
mystr.isalpha()? ? #返回結(jié)果為True
mystr.isdigit()????????#返回結(jié)果為False
mystr.isalnum()? ? ? ? 返回結(jié)果為True
mystr=["hello","world","hello","python"]
".".join(mystr)? #首先將該列表轉(zhuǎn)換成字符串,并使用小數(shù)點(diǎn)將其分隔開(kāi)來(lái)得到的字符串為:"hello.world.hello.python"
" ".join(mystr)? ? #得到的字符串為"hello world hello python"