字符串
一.字符串
1.什么是字符串(str)
1)字符串
字符串是容器型數(shù)據(jù)類型笨忌;以單引號或者雙引號作為容器的標(biāo)志睛驳,引號中所有的內(nèi)容都屬于字符串的元素弟塞。
特點(diǎn):不可變凰浮,有序(支持下標(biāo)操作)
注意:python中三個單引號或者三個雙引號引起來的也是字符串我抠,這種字符串在字符串內(nèi)部可以直接按回車對字符串進(jìn)行換行
2)字符串的元素
字符串中元素又叫字符(注意:python中有字符的概念,但是沒有字符類型袜茧;長度是1的字符串就可以看成字符)
a.普通字符:字母菜拓、數(shù)字、各國的文字和符號等(可以寫在引號中的符號)
b.轉(zhuǎn)義字符:字符串中在一些特定的符號前加\來表示特殊功能和意義
\' ?-? '
\" ?-? "
\n ?-? 換行
\\ ?-? \
\t ?-? tab
c.編碼字符: \u 4位16進(jìn)制數(shù) ?-? 將四位十六進(jìn)制數(shù)對應(yīng)的編碼值轉(zhuǎn)換成字符
1)字符編碼
計(jì)算機(jī)只有直接存儲數(shù)字的能力笛厦,不能直接存儲字符纳鼎。
當(dāng)需要用計(jì)算機(jī)存儲字符的時候,實(shí)質(zhì)存的是字符對應(yīng)的固定的數(shù)字,這個數(shù)字就是字符在計(jì)算機(jī)中的編碼喷橙。
每一個字符和數(shù)字的對應(yīng)關(guān)系叫編碼表啥么。
2)ASCII碼表和Unicode編碼表
ASCII碼表是由美國國家標(biāo)準(zhǔn)制定的專門根據(jù)美國符號進(jìn)行編碼的,里面只包含一些特殊符號贰逾、字碼和數(shù)字
(不包含中文悬荣、日語、韓語等)
python采用的是unicode編碼表
注:中文范圍 4E00 - 9FA5:Unicode編碼表是對ASCII碼表的擴(kuò)展疙剑,包含了世界上所有國家所有語言的符號(又叫萬國碼)
3)字符編碼相關(guān)方法
chr(編碼值) - 將編碼值轉(zhuǎn)換成字符
ord(字符) - 獲取字符對應(yīng)的編碼值(十進(jìn)制)
二.字符串操作
1.獲取字符 和列表獲取元素一樣
str1 = 'hello world!'
1)獲取單個字符
print(str1[0]) # 'h'
2)字符串切片
3)遍歷
for char in 'abc':
print(char)
#練習(xí):統(tǒng)計(jì)一個字符串中小寫字母的個數(shù)
str2 = 'How Are You! Im Five, THANK YOU'
count = 0
for char in str2:
if 'a' <= char <= 'z':
count += 1
print(count)
2.字符串操作
1)+ 和 *
字符串1 + 字符串2 ?->? 將字符串1和字符串2拼接在一起產(chǎn)生一個新的字符串
字符串 * N / N * 字符串 ? ->? 字符串重復(fù)N次產(chǎn)生一個新的字符串
2)==氯迂, !=
3)>, <, >= , <=
只能兩個字符串比較大小 ?- ?從前往后找到第一組不想等的字符,比較他們編碼值的大小
4)in / not in
字符串1 in 字符串2? ->?判斷字符串2中是否包含字符串1(判斷字符串1是否為字符串2的字串)
5)len, max, min, sorted, str
注意:轉(zhuǎn)義字符串和編碼字符的長度都是1
字符串轉(zhuǎn)換:所有的數(shù)據(jù)都可以轉(zhuǎn)換成字符串言缤,轉(zhuǎn)換的時候是將數(shù)據(jù)放在引號中
6)r語法
在字符串的最前面加r或R嚼蚀,可以阻止字符串中所有的轉(zhuǎn)義字符轉(zhuǎn)義
7)格式字符串
在字符串中用格式占位符表示字符串中不確定的部分
a.語法:包含格式占位符的字符 %(數(shù)據(jù)1,數(shù)據(jù)2...)?- ?()中數(shù)據(jù)的個數(shù)和類型要和前面格式占位符一一對應(yīng)
b.格式占位符
%s ?- ?字符串
%d ?- ?整數(shù)
%.Nf ?- ? 浮點(diǎn)數(shù)管挟,N控制小數(shù)點(diǎn)后小數(shù)的位數(shù)
%c ?- ?字符(可以將數(shù)字轉(zhuǎn)換成字符)
注意:1)所有的數(shù)據(jù)都可以使用%s來做格式占位符
?? 2)所有的數(shù)據(jù)都可以通過%s來接收
三.字符串相關(guān)方法
1.對齊方式
字符串.center(寬度, 填充字符 = ' ') ?- ? 居中
字符串.ljust(寬度, 填充字符 = ' ') ?- ? 左對齊
字符串.rjust(寬度, 填充字符 = ' ') ?- ? 右對齊
字符串.zfill(寬度) == 字符串.rjust(寬度, 0)
str1 = 'abc'
print(str1.center(10, '+'))
print(str1.ljust(10))
print(str1.rjust(10))
print(str1.zfill(10))
2.統(tǒng)計(jì)字串的個數(shù)
字符串1.count(字符串2)?- ? 統(tǒng)計(jì)字符串1中字符串2出現(xiàn)的次數(shù)
print(str1.count(('you',0,12))) ? ? # 可以指定范圍
3.獲取字串下標(biāo)
字符串.find() 和 字符串.index() # 兩者作用相同轿曙,區(qū)別是find找不到的時候返回-1,而index找不到會直接報(bào)錯
4.join方法
字符串.join(序列) - 將序列中的元素用字符串連接產(chǎn)生一個新的字符串
要求序列中的元素是字符串僻孝,如果是字典导帝,key是字符串
new_str = '+'.join('123')
注意:字典連接的是鍵,數(shù)字序列不能連接
5.替換
字符串1.replace(字符串2, 字符串3) ?- ? 將字符串1中所有的字符串2都替換成字符串3
字符串1.replace(字符串2, 字符串3, N) ?- ? 將字符串1中的前N個字符串2都替換成字符串3
6.字符串切割
字符串1.split(':') - 將字符串2作為切割點(diǎn)切割字符串1穿铆,返回一個列表