字符串
- 字符串
字符串是容器型數(shù)據(jù)類(lèi)型(序列);以單引號(hào)或者雙引號(hào)作為容器的標(biāo)志,引號(hào)中的所有內(nèi)容都是字符串的元素
'asd' --> 三個(gè)元素
'we,we,e' --> 七個(gè)元素
特點(diǎn):不可變的,有序(支持下標(biāo)操作) - 字符串的元素
字符串中的元素又叫字符(注意:python中有字符的概念,但是沒(méi)有字符類(lèi)型;長(zhǎng)度是1的字符串就可以看成字符)
a.普通字符:字母、數(shù)字、各國(guó)的文字和符號(hào)等(可以直接寫(xiě)在引號(hào)中的符號(hào))
b.轉(zhuǎn)義字符:在字符串中在一些特定符號(hào)前加\來(lái)表示特殊的功能和意義
\ -
\t - tab鍵(制表符);len為1
1、編碼字符:\u4為16進(jìn)制數(shù) --> 將4為16進(jìn)制數(shù)對(duì)應(yīng)的編碼轉(zhuǎn)換成字符
- 字符編碼
計(jì)算機(jī)只有直接存儲(chǔ)數(shù)字的能力,不能直接存儲(chǔ)字符;當(dāng)許需要用計(jì)算機(jī)存儲(chǔ)字符的時(shí)候,實(shí)質(zhì)存的是字符對(duì)應(yīng)的固定的數(shù)字,
每一個(gè)字符和數(shù)字對(duì)應(yīng)的關(guān)系叫編碼表 - ASCII編碼表和Unicode編碼表
ASCII編碼表是由美國(guó)國(guó)家標(biāo)準(zhǔn)制定的專(zhuān)門(mén)針對(duì)美國(guó)符號(hào)及逆行編碼的,里面包含一些特殊符號(hào)、字母、和數(shù)字(不包含中文等)
python采用的是Unicode編碼表:Unicode編碼表是對(duì)ASCII表的擴(kuò)展
中文的Unicode編碼范圍為4e00-9fa5 - 字符編碼相關(guān)的方法
chr(編碼值) --> 將編碼值傳換成字符
ord(字符) --> 獲取字符對(duì)應(yīng)的編碼值
str1 = 'qw\'qwe'
str2 = 'hello\\now'
str3 = '\t bool'
print(str1)
print(str2)
print(str3, len(str3))
count = 0
for i in range(0x4e00, 0x9fa5):
print(chr(i), end=" ")
count += 1
if count % 30 == 0:
print()
print(ord('錦'), ord('先'), ord('森'))
print(ord('a'))
print(chr(123))
2、獲取字符
str1 = 'hello world!'
# 1)獲取單個(gè)字符
print(str1[0])
# 2)字符串切片
# 練習(xí):統(tǒng)計(jì)一個(gè)字符串中小寫(xiě)字母的個(gè)數(shù)
count = 0
str2 = 'Hello World! Thank you'
for i in str2:
if 97 <= ord(i) <=122:
count += 1
print(i, end="")
print()
print(count)
3、字符串操作
#1)+ 和*
#字符串1 + 字符串2 --> 將字符串1和字符串2拼接到一起產(chǎn)生一個(gè)新的字符串
#字符串 * N / N * 字符串 --> 字符串重復(fù)N次產(chǎn)生一個(gè)新的字符串
str1 = 'abc'
str2 = '123'
print(str1+str2)
print(str1 * 3)
# 2)== 、 !=
print('qwe' == 'qwe')
print('qwe' == 'qew')
# 3)>, <, >=, <=
# 只能兩個(gè)字符串比較大小 --> 從前往后找到第一組不相等的字符,比較它們編碼值得大小,誰(shuí)的編碼值大哪個(gè)字符串就大
print('abc' > 'acb')
print('abc' > 'ab')
print('\u4e00', '\u9fa5', ord('\u4e00'), chr(19968))
# 4)in / not in
# 字符串1 in 字符串2 --> 判斷字符串2中是否包含字符串1
# 5)len, max, min, sorted, str
# 注意:轉(zhuǎn)義字符和編碼字符的長(zhǎng)度都是1
#字符串轉(zhuǎn)換:所有的數(shù)據(jù)都可以轉(zhuǎn)換成字符串,轉(zhuǎn)換的時(shí)候?qū)?shù)據(jù)房在引號(hào)中
# 6)r語(yǔ)法
# 在字符串的最前面加r或R,可以阻止字符串中所有的轉(zhuǎn)移字符轉(zhuǎn)義
# 7)格式字符串
#在字符串中用格式占位符表示字符串中不確定的部分
#a.語(yǔ)法:包含格式占位符的字符 % (數(shù)據(jù)1, 數(shù)據(jù)2, ...) --> ()中數(shù)據(jù)的個(gè)數(shù)和類(lèi)型要和前面格式占位符一一對(duì)應(yīng)
#b.格式占位符
#%s --> 字符串
#%d --> 整數(shù)
#%.Nf --> 浮點(diǎn)數(shù),N表示控制小數(shù)點(diǎn)后的位數(shù)
#%c --> 字符(可以將數(shù)字轉(zhuǎn)換成字符)
#注意:所有的數(shù)據(jù)都可以使用%s來(lái)做格式占位符,所有的數(shù)據(jù)都可以使
print('{} {:.3f} {} {h}'.format(1, 2.2343223, 3, h='hello'))
4、對(duì)齊方式
字符串.center(寬度, 填充字符=' ') -居中
字符串.ljust(寬度, 填充字符=' ') - 左對(duì)齊
字符串.rjust(寬度, 填充字符=' ') - 右對(duì)齊
字符串.zfill(寬度)
str1 = 'zxc'
print(str1.center(9))
print(str1.ljust(9))
print(str1.rjust(9))
print(str1.zfill(9))
5、統(tǒng)計(jì)字符串的個(gè)數(shù)
# 字符串1.count(字符串2) --> 統(tǒng)計(jì)字符串1中字符串2出現(xiàn)的個(gè)數(shù)
str2 = 'we are we hello ww'
print(str2.count('we'))
print(str2.count('w'))
print(str2.count('w', 0, 10)) # 在下標(biāo)是[0, 12)之間統(tǒng)計(jì)w的個(gè)數(shù)
6、獲取字串下標(biāo)
print(str2.find('a'))
print(str2.index('a'))
7、join方法
字符串.join(序列) --> 將序列中的元素用字符串連接產(chǎn)生一個(gè)新的字符串
要求序列中的元素必須是字符串,如果是字典,會(huì)將字典中的鍵(字符串)連接起來(lái)
8、替換
字符串1.replace(字符串2, 字符串3, N) --> 將字符串1中前N個(gè)字符串2替換成字符串3
str3 = 'hello world thank you'