Python中字符串對(duì)象語(yǔ)法分享
前言:
前面提到了Python中的數(shù)值型內(nèi)置數(shù)據(jù)類型,接下來(lái)呢我們就著重介紹一下字符串類型。在Python中字符串是一個(gè)有序的字符集合,沒(méi)有獨(dú)立的字符數(shù)據(jù)類型,當(dāng)字符串長(zhǎng)度為1時(shí)就可以認(rèn)為其是字符。Python的內(nèi)置數(shù)據(jù)類型str用于字符串處理。str對(duì)象的值為字符系列字符串是不可變序列。
一、字符串的外觀
1.字符串字面量
顧名思義字符串就是有一串字符所組成的東西而為了這串東西的安全,要將其放進(jìn)單引號(hào)、雙引號(hào)、三單引號(hào)、三雙引號(hào)其中之一中。要一一對(duì)應(yīng),不可以拿單引號(hào)配三引號(hào)?!締我?hào)、雙引號(hào)創(chuàng)造的字符串不可以換行】
? 'Hello World' ? "Hello World" '''Hello World''' """Hello World"""
瑪麗震場(chǎng):
''' ?? ??? ??? ? ?Hello World ? ? ? ? ? ? ? ? ******** ? ? ? ? ? ? ? ?************ ? ? ? ? ? ? ? ?####....#. ? ? ? ? ? ? ?#..###.....##.... ? ? ? ? ? ? ?###.......###### ? ? ? ? ? ? ?### ? ? ? ? ? ? ? ? ### ? ? ? ? ? ### ? ? ? ? ? ### ? ? ? ? ? ? ? ? ........... ? ? ? ? ? ? ? #...# ? ? ? ? ? ? ? #...# ? ? ? ? #...# ? ? ? ? #...# ? ? ? ? ? ? ? ?##*####### ? ? ? ? ? ? ? ? #.#.# ? ? ? ? ? ? ? #.#.# ? ? ? ? #.#.# ? ? ? ? #.#.# ? ? ? ? ? ? ####*******###### ? ? ? ? ? ? #.#.# ? ? ? ? ? ? ? #.#.# ? ? ? ? #.#.# ? ? ? ? #.#.# ? ? ? ? ? ?...#***.****.*###.... ? ? ? ? ?#...# ? ? ? ? ? ? ? #...# ? ? ? ? #...# ? ? ? ? #...# ? ? ? ? ? ?....**********##..... ? ? ? ? ? ### ? ? ? ? ? ? ? ? ### ? ? ? ? ? ### ? ? ? ? ? ### ? ? ? ? ? ?....**** ? ?*****.... ? ? ? ? ? ? ?#### ? ? ? ?#### ? ? ? ? ? ?###### ? ? ? ?###### ############################################################## ? ? ? ? ? ? ?################################## #...#......#.##...#......#.##...#......#.##------------------# ? ? ? ? ? ? ?#...#......#.##------------------# ###########################################------------------# ? ? ? ? ? ? ?###############------------------# #..#....#....##..#....#....##..#....#....##################### ? ? ? ? ? ? ?#..#....#....##################### ########################################## ? ?#----------# ? ? ? ? ? ? ? ? ?############## ? ?#----------# #.....#......##.....#......##.....#......# ? ?#----------# ? ? ? ? ? ? ? ? ?#.....#......# ? ?#----------# ########################################## ? ?#----------# ? ? ? ? ? ? ? ? ?############## ? ?#----------# #.#..#....#..##.#..#....#..##.#..#....#..# ? ?#----------# ? ? ? ? ? ? ? ? ?#.#..#....#..# ? ?#----------# ########################################## ? ?############ ? ? ? ? ? ? ? ? ?############## ? ?############ '''
2.字符串與多行注釋
在Python
中單行注釋使用的是#,對(duì)于多行注釋可以使用三個(gè)雙引號(hào),也可以使用三個(gè)單引號(hào)。
#我是單行注釋 ''' 我是一行注釋 ''' """ 我也是一行注釋 """
3.字符串編碼方式
在Python2中支持的是ASCII編碼,Python3
中使用的是Unicode
,支持中文。內(nèi)置函數(shù)ord()
與chr()
可以進(jìn)行編碼與字符之間的轉(zhuǎn)換。
例如:
二、字符串對(duì)象
1.str
str(object=‘')#創(chuàng)建空字符串【當(dāng)然這個(gè)object對(duì)象可以指向任意對(duì)象】
str()返回一個(gè)字符串對(duì)象通過(guò)str()可以將任意對(duì)象轉(zhuǎn)換為str對(duì)象如果被轉(zhuǎn)換對(duì)象實(shí)現(xiàn)了__str__()方法,則轉(zhuǎn)換為指定的str對(duì)象,否則轉(zhuǎn)換為repr(object)
,repr()是Python另一個(gè)內(nèi)置的函數(shù),該函數(shù)返回一個(gè)對(duì)象的更精確的字符串表示形式。
2.str實(shí)現(xiàn)原理
str對(duì)象是不可變對(duì)象,所以使用str方法生成的新的str對(duì)象都是一個(gè)新的對(duì)象。字符串通常會(huì)在常量池中存在,并且一個(gè)字符串只有一個(gè)這樣的機(jī)制極大的節(jié)約了空間與時(shí)間稱為【字符串駐留機(jī)制】
代碼如下:
a='asd' b='asd' # 兩個(gè)字符串對(duì)象地址相同 print(id(a),id(b))
3.str中的內(nèi)置方法
①匹配子串
''' 參數(shù)對(duì)象在初始對(duì)象中的位置 ''' p='asdqweasdwr' print('----------------------------------------------------') # 找到打印,找不到拋出異常 # 找出字串第一次出現(xiàn)的位置 # print('asd'.index(p)) print(p.index('asd')) # 找出子串最后一次出現(xiàn)的位置 print(p.rindex('asd')) # 找子串,找不到不拋出異常打印-1 print('asd'.find(p)) print(p.find('asd')) print(p.rfind('asd'))
②字符串的大小寫轉(zhuǎn)換
''' 大寫轉(zhuǎn)小寫,小寫轉(zhuǎn)大寫,每個(gè)單詞開(kāi)頭轉(zhuǎn)大寫,每段開(kāi)頭轉(zhuǎn)大寫 轉(zhuǎn)換函數(shù)都是字符串對(duì)象的函數(shù) ''' print('----------------------------------------------------') # 小寫轉(zhuǎn)大寫 print('asd asd qwe'.upper()) # 大寫轉(zhuǎn)小寫 print('aSd Asd Qwe'.lower()) # 大小寫互換 print('AsD SsE qwe'.swapcase()) # 開(kāi)頭轉(zhuǎn)成小寫 print('asd asd qwe'.capitalize()) # 每個(gè)單詞開(kāi)頭轉(zhuǎn)大寫 print('asd asd qwe'.title())
③字符串中的內(nèi)容對(duì)齊方法
''' 字符串對(duì)齊,只有指定的寬度大于字符串長(zhǎng)度才會(huì)進(jìn)行對(duì)齊,否則沒(méi)有效果 ''' print('----------------------------------------------------') # 居中 print('qwe'.center(20,'*')) # 左對(duì)齊 print('asd'.ljust(20,'@')) # 右對(duì)齊 print('ert'.rjust(20,'$')) # 零填充 print('-8750'.zfill(10))
④拆解字符串
''' 從字符串左邊開(kāi)始劈分,默認(rèn)以空格為間隔,劈分的結(jié)果是一個(gè)列表 sep指定分劈的字符,maxsplit指定分劈的次數(shù) ''' print('----------------------------------------------------') # 默認(rèn)從左開(kāi)始劈 l='hello234234234sds World kity'.split(sep='2',maxsplit=5) print(l) # 默認(rèn)從右開(kāi)始劈 ll='hello234234234sds World kity'.rsplit() print(ll)
⑤判斷字符串類型
''' 通過(guò)函數(shù)判斷字符串內(nèi)含有的字符類型 ''' print('----------------------------------------------------') # 判斷字符串是不是合法的標(biāo)識(shí)符 print('asdqwew.,.123'.isidentifier()) # 判斷字符串是否全部由空白字符組成(回車、換行、水平制表符) print('\n\t'.isspace()) #判斷字符串是否全部由字母組成 print('asdqwewqxas'.isalpha()) # 判斷字符串是否全部由十進(jìn)制數(shù)字組成 print('hello234234234sds World kity'.isdecimal()) # 判斷字符串是否全由數(shù)字組成 print('hello234234234sds World kity'.isnumeric()) # 判斷字符串是否全由字母和數(shù)字組成 print('hello234234234sdsWorldkit'.isalnum())
⑥字符串的替代與合并
''' 字符串的費(fèi)空間拼接,以及字符串的不費(fèi)空間拼接 ''' print('----------------------------------------------------') # 字符串子串的替換 # 字符串的替換,替換后原來(lái)的字符串不發(fā)生變化,返回新產(chǎn)生的字符串 # 參數(shù)依次是被替換的子串,新的子串,以及最大替換次數(shù) print('asd,asdqweasdkasdjklnlhihasdnjasd'.replace('asd','qwe',2)) print() # 字符串的拼接 # 費(fèi)空間(產(chǎn)生字符串碎片) a='qwe' a=a+'asd' # 節(jié)約空間(不產(chǎn)生字符串碎片) q='qwe' q.join('asd') print('---------------------------------')
⑦字符串的格式化
''' 有兩種方式一種是占位符,另一種是花括號(hào) ''' name='小朱佩奇' age=20 print('-------------------------------') # 字符串格式化 print('我叫%s,今年%d歲了' %(name,age)) print('我叫{0},今年{1}歲了'.format(name,age)) # 小數(shù)格式化 # 一共十位,小數(shù)三位算上小數(shù)點(diǎn) print('%10.3f' %3.14159265) # 一共10位,數(shù)字占3位 print('{0:10.3}'.format(3.14159265))
⑧字符串編碼
sql='為人民服務(wù)' # GBK中中文字符占有兩位 print(sql.encode('GBK')) # UTF-8中中文字符占有3位 print(sql.encode('UTF-8')) # 字符串轉(zhuǎn)為字節(jié)碼 # 編碼 by1=b'hello' by2='hello'.encode() # 解碼 print(str(b'hello')) print(by2.decode())
4.字符串切片
代碼如下:
''' 字符串切片后會(huì)產(chǎn)生新的字符串 ''' print('--------------------------------') a='Hello World' print(a[3:]) print(a[:5]) print(a[1:8:2]) print(a[:-6]) print(a[-6:])
結(jié)果:
總結(jié):
上面就是今日分享的關(guān)于Python中字符串對(duì)象的所有內(nèi)容啦。在Python中字符串語(yǔ)法簡(jiǎn)單但是方法的作用十分的復(fù)雜并且實(shí)用,由于東西較多想要完全掌握還是比較難滴。還望我們多多努力啦。
到此這篇關(guān)于Python中字符串對(duì)象語(yǔ)法分享的文章就介紹到這了,更多相關(guān)Python字符串對(duì)象語(yǔ)法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python?sklearn轉(zhuǎn)換器估計(jì)器和K-近鄰算法
這篇文章主要介紹了Python?sklearn轉(zhuǎn)換器估計(jì)器和K-近鄰算法,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08Python實(shí)現(xiàn)對(duì)excel文件列表值進(jìn)行統(tǒng)計(jì)的方法
這篇文章主要介紹了Python實(shí)現(xiàn)對(duì)excel文件列表值進(jìn)行統(tǒng)計(jì)的方法,涉及Python基于win32com組件操作表格文件的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07python算法練習(xí)之兔子產(chǎn)子(斐波那切數(shù)列)
這篇文章主要給大家介紹python算法練習(xí)兔子產(chǎn)子,文章先進(jìn)行問(wèn)題描述及分析然后設(shè)計(jì)算法最后再得出完整程序,需要的朋友可以參考一下 文章得具體內(nèi)容2021-10-10pandas 實(shí)現(xiàn)將重復(fù)表格去重,并重新轉(zhuǎn)換為表格的方法
下面小編就為大家分享一篇pandas 實(shí)現(xiàn)將重復(fù)表格去重,并重新轉(zhuǎn)換為表格的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04Python讀取英文文件并記錄每個(gè)單詞出現(xiàn)次數(shù)后降序輸出示例
這篇文章主要介紹了Python讀取英文文件并記錄每個(gè)單詞出現(xiàn)次數(shù)后降序輸出,涉及Python文件讀取、字符串替換、分割以及字典遍歷、排序等相關(guān)操作技巧,需要的朋友可以參考下2018-06-06python在命令行下使用google翻譯(帶語(yǔ)音)
這篇文章主要介紹了使用google翻譯服務(wù)獲得翻譯和語(yǔ)音的示例,大家參考使用吧2014-01-01