(補充):字符前面加r/R來阻止轉(zhuǎn)義
字符串
python中可以把字符串看成是一個序列(容器)迄靠,容器中內(nèi)容只能是字符咧虎,每一個字符可以稱為字符串中的元素卓缰。
字符串是一個不可變的序列,有序的(不可變指的是字符串中的每個字符,以及每個字符的位置不可變)
獲取字符串中的單個字符
每一個字符串中的字符都會對應(yīng)一個下標(biāo)征唬,下標(biāo)是根據(jù)字符在字符串中的位置震叮,從前往后依次增加的(第一個是0)
獲取單個字符(下標(biāo)不能越界)
語法:字符串[下標(biāo)] ---> 根據(jù)下標(biāo)獲取字符串中的字符
說明:
字符串:可以是字符串的變量,也可以是字符串值
[]:固定寫法
下標(biāo):0~字符串長度-1鳍鸵; -1 ~ -長度
str3 = 'python'
#p -->0 y -->1 t -->2 h-->3......n -->5
#n -->-1 0 -->-2 h -->-3 t-->-4......p -->-6
切片
獲取部分字符
a.語法:字符串[起始下標(biāo):結(jié)束下標(biāo)] -->獲取字符串中從起始下標(biāo)開始,到結(jié)束下標(biāo)-1的字符
默認步長為1
注意:起始下標(biāo)對應(yīng)的字符一定要在結(jié)束下標(biāo)對應(yīng)的字符前面尉间,否則取不到值偿乖。
str2 = '今天心情也要美美噠'
print(str2[1:-1])
#天心情也要美美
b.語法:字符串[ 起始下標(biāo):結(jié)束下標(biāo):步長] --> 從起始下標(biāo)開始獲取,每步長獲取一個哲嘲,獲取到結(jié)束下標(biāo)前一個為止
步長為正:從前往后取(起始下標(biāo)對應(yīng)的字符要在結(jié)束下標(biāo)對應(yīng)的字符前面贪薪,否則取不到值)
步長為負:從后往前取(起始下標(biāo)對應(yīng)的字符要在結(jié)束下標(biāo)對應(yīng)的字符后面,否則取不到值)
str5 = '海賊王眠副、一拳超人画切、一人之下、進擊的巨人'
print(str5[1:10:2])
#賊囱怕、拳人一
print(str5[10:0:-1])
#人一霍弹、人超拳一、王賊
切片時下標(biāo)可以省略娃弓,省略不同下標(biāo)有不同意義
str3 = '閣下何不同風(fēng)起典格,扶搖直上九萬里'
print(str3[:4])
#閣下何不
print(str3[:4:-1])
#里萬九上直搖扶,起風(fēng)
省略結(jié)束下標(biāo):字符[起始下標(biāo):] ---->從開始下標(biāo)取台丛,取到最后
str3 = '閣下何不同風(fēng)起耍缴,扶搖直上九萬里'
print(str3[-4:])
#上九萬里
str3 = '閣下何不同風(fēng)起,扶搖直上九萬里'
print(str3[-4::-1])
#上直搖扶挽霉,起風(fēng)同不何下閣
str3 = '閣下何不同風(fēng)起防嗡,扶搖直上九萬里'
print(str3[::-1])
#里萬九上直搖扶,起風(fēng)同不何下閣
注意:下標(biāo)可以越界
字符串運算符
字符串支持+侠坎、*和比較運算符
+
字符串的+號運算符
字符串1 + 字符串2 --> 將字符串1和字符串2拼接在一起產(chǎn)生一個新的字符串
str4 = '玉樹臨風(fēng)美少年'
str6 = '攬鏡自顧夜不眠'
str7 = ' '
print(str4+str7+str6)
#玉樹臨風(fēng)美少年 攬鏡自顧夜不眠
*
字符串的*號運算符
字符串1 * n -->字符串1重復(fù)n次蚁趁,產(chǎn)生一個新的字符串(n只能是數(shù)字)
str8 = '家有千金,行止由心硅蹦!'
print(str8*3)
#家有千金荣德,行止由心!家有千金童芹,行止由心涮瞻!家有千金,行止由心假褪!
比較運算符
判斷相等
print('abc' == 'abc')(判斷字符串兩邊的值是否相等)
#True
print('abc' != 'ac')
#True
比較大小
從前往后署咽,每個字符的編碼值的大小,如果第一個相等就比第二個直到比到不相同為止 (如果都相等就是True)
print('zabcdef' > 'zbc')
#False
判斷一個字符是否是數(shù)字字符,判斷一個字符是否是字母字符(根據(jù)編碼值比較)
char = '5'
print('0'<=char<='9')
#True (判斷char是否是數(shù)字字符)
char = 'H'
print('a'<=char<='z' or 'A' <=char<='z') (判斷判斷char是否是字母字符)
##True
in和not in
字符串1 in 字符串2 --> 判斷字符串1是否在字符串2中(字符串2是否包含字符串1)結(jié)果是布爾值宁否。
print('ab' in 'abc')
#True
print('ab' in 'acd')
#False
print('ab' not in 'abc')
#False
print('ab' not in 'acd')
#True
len()函數(shù)
len是python內(nèi)置函數(shù)窒升,功能是用來獲取序列的長度(容器中元素的個數(shù))
len(序列)
字符串的長度就是字符串中字符的個數(shù)
str9 = '床前明月光\n疑是地上霜!'
print(len(str9))
#12
str9 = r'床前明月光\n疑是地上霜!'
#13
str9 = '你好嗎?\u4eff\u5cff'
print(len(str9))
#6
str9 = '你好嗎慕匠?\u4eff\u5cff'
print(str9[len(str9)-1])
#峿
str9 = '你好嗎饱须?\u4eff\u5cff'
print(str9[-len(str9)])
#你
%(格式字符串)
字符串的內(nèi)部,通過格式占位符來表示字符串中變化的部分台谊,然后在后面用值來填充變化的部分
語法:帶有占位符的字符串 % (給占位符賦值的值)
注意:前面有多少個占位符蓉媳,后邊()中就必須有多少值。并且值的個數(shù)和值的類型要和前面的占位符一一對應(yīng)
%s --->字符串
%d --->數(shù)字
%f --->浮點數(shù)
%.nf -->保留小數(shù)點后n位小數(shù)
%e -->用科學(xué)計數(shù)法格式浮點數(shù)
%c -->數(shù)字轉(zhuǎn)字符
nsme = '葉玉'
age = 18
money = 19.699
message = '姓名:%s 年齡:%d 薪資:%.3f' %(nsme,age,money)
print(message)
#姓名:葉玉 年齡:18 薪資:19.699
字符串的內(nèi)建函數(shù)
使用方法:字符串.方法名(參數(shù))
capitalize():將字符串的第一個字符串轉(zhuǎn)換為大寫锅铅,返回一個新的字符串
如果第一個字符不是字母酪呻,就不轉(zhuǎn)換
str1 = 'yeyu'
a = str1.capitalize()
print(a)
#Yeyu
字符串居中
center(width,fillchar)
str1 = '葉玉'
new_str = str1.center(8,'*')
print(new_str)
#***葉玉***
字符串左對齊
ljust(width,fillchar)
str1 = '葉玉'
new_str = str1.ljust(8,'*')
print(new_str)
#葉玉******
字符串右對齊
rjust(width,fillchar)
str1 = '葉玉'
new_str = str1.rjust(8,'*')
print(new_str)
#******葉玉
練習(xí):根據(jù)進班順序,添加學(xué)生號 例如 第一個人學(xué)號就是python0001
num = 99
new = 'python1807'+str(num).rjust(4,'0')
print(new)
#python18070099
字符串1.count(字符串2)-->統(tǒng)計字符串1中字符串2 的個數(shù)
num = 'aaaabbbaaaaa'.count('b')
print(num)
#3
字符串1.endswith(字符串2)-->判斷字符串1 是否以字符串2結(jié)尾
str1 = 'when i was'
print(str1.endswith('was'))
#True
字符串1.startswith(字符串2)-->判斷字符串1 是否以字符串2開頭
str1 = 'when i was'
print(str1.startswith('when'))
#True