????????????????????????????????????????????????Python入門之字符串
成都創(chuàng)新互聯(lián)主營(yíng)溫泉網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件開發(fā)公司,溫泉h5微信小程序搭建,溫泉網(wǎng)站營(yíng)銷推廣歡迎溫泉等地區(qū)企業(yè)咨詢
一、字符串的概念及創(chuàng)建
1、字符串的概念
* 在程序中,文本內(nèi)容用字符串來表示
* 字符串是有一系列有序的字符組成,如: 'helloworld'
* 字符串和列表,元組一樣,都屬于序列類型'
* 可以將字符串看做字符的列表,列表的很多操作對(duì)于字符串也是適用的
* 沒有單獨(dú)的字符類型,字符就是指包含一個(gè)元素的字符串 例如: 'a', 'b', 'c'
2、字符串的創(chuàng)建
''' 使用雙引號(hào)或者單引號(hào)都可以創(chuàng)建字符串 ''' s?=?'ok' print?(s,type(s))?#?ok?s1?=?"ok1" print?(s1,type(s1))?#?ok1? ''' 使用內(nèi)置函數(shù)str,傳入的可以是數(shù)字,可以是字母,也可以是浮點(diǎn)數(shù),最終該數(shù)據(jù)類型為str類型 ''' s2?=?str('abc') print?(s2,type(s2))?#?abc? s3?=?str('123') print?(s3,type(s3))?#?123?
?
二、轉(zhuǎn)義字符
1、使用轉(zhuǎn)義字符無法表示的特殊字符
當(dāng)字符串中包含換行、回車、水平制表符、退格等無法直接表示的特殊字符時(shí),該如何表示呢?
????換行: newline,光標(biāo)移動(dòng)到下一行的開頭
????回車:? return,光標(biāo)移動(dòng)到本行開頭
????水平制表符:tab鍵,光標(biāo)移動(dòng)下一組4個(gè)空格開始處
????退格:backspace鍵,回退一個(gè)字符
可以使用如下轉(zhuǎn)義字符
換行:
回車: \r
水平制表符: \t
退格: \b
print('abc\ndef')?#?abcdef?換行顯示 print('abc\rdef')?#?def?回車,移動(dòng)到光標(biāo)本行開頭 print('123456\t123\t45')?#?123456??123????45?制表符4個(gè)空格,按整體字符長(zhǎng)度算 print('abc\bdef')?#?abdef?退格,刪除了c
2、使用反斜杠"\",作為轉(zhuǎn)義符
例如想直接打印一個(gè)字符串,但想在該字符串中包含單引,雙引等,需要使用\進(jìn)行轉(zhuǎn)義
print('what\'s?you?name')?#?what's?you?name print('打印一個(gè)雙引號(hào)\"')?#?打印一個(gè)雙引號(hào)" print('打印一個(gè)反斜杠\\')?#?打印一個(gè)反斜杠\
3、原始字符串
例如想打印 '\tC:\Program Files' -t為制表符,不想讓-t生效,那么可以使用到原始字符串raw
print('\t:programfiles')??# :programfiles print(r'\t:programfiles')?#\t:programfiles print(R'\t:programfiles')?#\t:programfiles
4、字符串查操作
? ?a)? 使用index、rindex、find、rfind查找字符串中元素索引
s?=?'12334567' print(s.index('3'))?#?2? print(s.rindex('3'))?#?3 print(s.find('3'))??#?2? print(s.rfind('3'))?#?3 #?可以指定查找start和stop,例如從索引1開始到5結(jié)束,查找元素3的索引 print(s.index('3',1,5))?#?2 print(s.rfind('3',1,5))?#?3 #?當(dāng)查找的元素不在指定索引中時(shí),index和rindex方法會(huì)拋出value?error #?當(dāng)查找的元素不在指定索引中時(shí),find和rfind方法會(huì)返回-1 print(s.index('9',1,5))?#?ValueError:?substring?not?found print(s.rindex('9',1,5))?#?ValueError:?substring?not?found print(s.find('9',1,5))??#?-1? print(s.rfind('9',1,5))?#?-1
?b) 亦可使用查找列表查操作,查找對(duì)應(yīng)索引的元素
s?=?'Python' print(s[3])??#?h print(s[1:4])?#?yth print(s[:-1])?#?Pytho print(s[::-1])?#?nohtyP print(s[:])??#?Python print(s[:2:-1])?#?noh
5、字符串的比較
a)? 使用 >, <, ==, !=對(duì)字符串進(jìn)行比較
s1?=?'abc' s2?=?'def' print(s1?==?s2)?#?False print(s1[0]??s2[0])?#?False print(s1?!=?s2)?#?True
b)?字符串也可以適用is,==是比較相等性,is是比較同一性,但是對(duì)于字符串來說,python重復(fù)進(jìn)行調(diào)用
a?=?b?=?'123' c?=?'123' print?(a?is?b)?#True print?(a?==?c)?#True print?(a?is?c)?#True print(id(a),id(c))??#139917133452656?139917133452656
6、字符串的反轉(zhuǎn)
使用內(nèi)置函數(shù)reversed對(duì)字符串進(jìn)行反轉(zhuǎn)
s?=?'hello?world' print(list(reversed(s)))??#?['d',?'l',?'r',?'o',?'w',?'?',?'o',?'l',?'l',?'e',?'h']
7、字符串的排序
使用內(nèi)置函數(shù)sorted對(duì)字符串進(jìn)行排序
s?=?'EdfaCb' #?可以指定排序規(guī)則,例如先轉(zhuǎn)換成小寫,然后進(jìn)行排序,或者排序完對(duì)字符串進(jìn)行反轉(zhuǎn) #?不指定規(guī)則,則按照ord()的方式排序 print(sorted(s,key?=?str.lower))?#?['a',?'b',?'C',?'d',?'E',?'f'] print(sorted(s,reverse?=?True))?#?['f',?'d',?'b',?'a',?'E',?'C'] print(sorted(s))?#?['C',?'E',?'a',?'b',?'d',?'f']
8、字符串的大小寫轉(zhuǎn)換
a) upper 將所有字符轉(zhuǎn)換成大寫
b) lower 將所有字符轉(zhuǎn)換成小寫
c) swapcase 把所有小寫轉(zhuǎn)換成大寫,大寫轉(zhuǎn)小寫
d) title 把每個(gè)單詞的開頭轉(zhuǎn)換成大寫
s?=?'java?PytHon?Shell' print(s.lower())?#java?python?shell print(s.upper())?#?JAVA?PYTHON?SHELL print(s.swapcase())?#?JAVA?pYThON?sHELL print(s.title())?#?Java?Python?Shell
9、字符串的對(duì)齊
a) center 中心對(duì)齊
b) rjust 右對(duì)齊
c) ljust 左對(duì)齊
以上方法可以指定兩個(gè)參數(shù),第一個(gè)參數(shù)是寬度,第二個(gè)參數(shù)是對(duì)齊符號(hào),不指定第二個(gè)參數(shù)默認(rèn)是空格。
d) zfill:右對(duì)齊,左邊用0填充
該方法值接收一個(gè)參數(shù),用于指定字符的寬度,如果指定的字符寬度小于字符串本身,那么返回字符串本身
s?=?'hello?world' print(s.center(20,'*'))?#?****hello?world***** print(s.ljust(18,'^'))?#?hello?world^^^^^^^ print(s.rjust(18,'$'))?#?$$$$$$$hello?world print(s.zfill(15))?#?0000hello?world
10、字符串的替換
調(diào)用replace方法,對(duì)字符串進(jìn)行替換,str.replace('old','new','replace_num')
s?=?'hi?hi?hi?hello' #將hi替換為hello,最大替換個(gè)數(shù)為2個(gè),不指定替換個(gè)數(shù)默認(rèn)為全部 print(s.replace('hi','hello',2))?#?hello?hello?hi?hello
11、去除字符串的前導(dǎo)符和后導(dǎo)符
調(diào)用方法lstrip、rstrip、strip對(duì)字符串前導(dǎo)符和后導(dǎo)符進(jìn)行去除
s?=?'****hello?world^^^^^' print(s.lstrip('*'))??#?hello?world^^^^^ print(s.rstrip('^'))??#?****hello?world print(s.strip('*^'))??#?hello?world