2020-07-10 字符串以及數(shù)字類型內(nèi)置函數(shù)

1.用途:記錄描述性質(zhì)的狀態(tài)草添,例如名字灸眼,性別蔫饰,國籍等

2. 定義方式:在引號(hào)('',"",''' ''',""" """)內(nèi)包含一串字符串

?s='hello'? #s=str('hello')

str功能可以把任意類型轉(zhuǎn)換成str類型

?res=str([1,2,3]) #"[1,2,3]"

?print(type(res))

3.常用操作加內(nèi)置方法

===========================》優(yōu)先掌握

1.按索引取值(正向取宏怔,反向染槲ā):只能取 不能改

s='hello word'

print(s[0],type(s[0]))? #'h'

print(s[-1])

非法操作

s[1]='E'? #不能修改? 會(huì)報(bào)錯(cuò)

s[222]

s[11]='A'

2.切片? (顧頭不顧尾烈菌,步長)===》屬于拷貝操作

s='hello word'

new_s=s[1:7]

print(new_s)

print(s)



new_s=s[1:7:2]? #1 3 5

print(new_s)

print(s)


new_s=s[:7:2]

new_s=[::2]? ? #0 2 4 6 8 10

print(new_s)? #h l o w r d

print(s)



new_s=s[::]? #完整拷貝阵幸,只留一個(gè)冒號(hào)就可以

print(new_s)

print(s)

s='hello word'

s1=s[1::-1]? # 不顯示取值? 會(huì)將所有的值都取完

print(s1)? ? ? ? # eh


print(len(s))

s2=s[9:7:-1]? #字符串長度為10 最后一個(gè)字符的索引為9

print(s2)? ? #d r

統(tǒng)計(jì)字符串的長度len

s='hello word'

print(len(s))



res=print('sfd')

print(res)#None

4.成員運(yùn)算 in 和not? in

s='hello word'

print('hel' in s )

print('egon' not in s )#語義明確花履,推薦使用

print(not 'egon' in s )

5.移除空白strip()? 碰到不屬于strip()里面的字符停下來,默認(rèn)()內(nèi)是空格,再從右邊開始

s='\n? ? ? ? ? hello? ? ? \t '

print(id(s))? ? ? #2171590232784

new_s=s.strip()

print(new_s)

print(id(s))? ? #2171590232784? ? ? ? 沒有改變?cè)址?/p>

去除左右兩邊非空白字符

s='hh#$%^&*hello word^&'.strip('h#o$%worfde^&ll*')

print(s)? ? 打印出來是空格

6.切分split:把字符串按照某個(gè)分隔符切成一個(gè)列表

userinfo='egonn123n18n3n1:'

res=userinfo.split('n')

print(res)

res='a'


res=res.split('a')

print(res)

純字符串組成的列表 (把列表按照某個(gè)格式切分成一個(gè)字符串)

p=['11','22','33','44','55']

res=':'.join(p)

print(res)

print('a a a a a'.split('a'))




res='my name is {x}{x}{y} my age is {y}{y}'.format(x=name,y=age)

print(res)

======================>需要掌握的操作

1.strip挚赊,lstrip,rstrip

print('*****hello****'.strip("*"))

print('*****hello****'.rstrip("*"))? #去除右邊的字符

print('*****hello****'.lstrip("*"))? #去除左邊的字符

2.lower诡壁,upper

msg='FGfFgjhjhFGfG'

res=msg.lower()? ? #全部變小寫

res1=msg.upper()? #全部變大寫

print(res,res1)

res=msg.swapcase()? #大小寫互相轉(zhuǎn)換

print(res)

3.startswith,endswith? 判斷一個(gè)字符是否為另一個(gè)字符串的首位或者末尾

msg='zhikun is Dsb'

print(msg.startswith('sb'))

print(msg.startswith('zhi'))

print(msg.endswith('sb'))

4.format的三種玩法

4.1 %s的方式

name='egon'

age=18

res1='my name is %s my age is %s'%(name,age)

print(res1)

4.2 formate的方式

name='egon'

age=18

res1='my name is {} my age is {}'.format(name,age)? ? ? ? 根據(jù)位置一一對(duì)應(yīng)

res2='my name is {0}{0}{0} my age is {0}{0}{0}{0}{0}{1}'.format(name,age)? 根據(jù)索引對(duì)應(yīng)

res3='my name is {x} my age is {y}'.format(x=name,y=age)? 根據(jù)變量名一一對(duì)應(yīng)

print(res1,res2,res3)

4.3 f''

name='egon'

age=18

res1=f'my name is {name} my age is {age}'? 在引號(hào)內(nèi)的花括號(hào)可以直接引用變量名來實(shí)現(xiàn)格式化輸出

print(res1)

了解:f搭配{}可以執(zhí)行字符串中的代碼

res=f'{len("hello")}'

print(res)

f'{len("hello")}'? 相當(dāng)于eval 都可以去運(yùn)行字符串中的代碼

res1=eval('len("hello")')

print(res1)

f包含的字符串可以放到多行

name='egon'

age=18

res1=f'my name is {name}' \

? ? ? f' my age is {age}'

print(res1)

在{}內(nèi)不能有\(zhòng)以及#

print(f'my name is {{egon}}')? #想要打印后加上{} 可以再外面再套一個(gè)花括號(hào)荠割,不能用轉(zhuǎn)譯符和#


print('勝率是%s%%' %70)? ? #想要打印百分比符號(hào) 需要在%后再加一個(gè)%取消前一個(gè)%的功能

5.split妹卿,rsplit

zhikun_dsb='zhikun:123:18'

print(zhikun_dsb.split(":"))? ? #以:為切割符 將字符串切割為字典 不指定切割次數(shù) 默認(rèn)從左到右全部切割

print(zhikun_dsb.split(":",1))? #以:為切割符,指定從左到右切割一次

print(zhikun_dsb.rsplit(":",1))? #以:為切割符蔑鹦,指定從右到左切割一次

6.join? 將純字符串的列表按照某種格式拼接為一個(gè)大字符串纽帖,

如果join內(nèi)為字符串,則會(huì)在字符串的每個(gè)子字符串后加入拼接的字符举反。

l=['zhukun_dsb','baobao_dsb','qiqi_dsb']

yangyang='='.join(l)

yangyang1='='.join('sdaweqr')

print(yangyang)

print(yangyang1)

?o=l[1]

y=l[2]

y=list(y)

print(y)

yangyang='>'.join('qiqi_dsb')#q>i>q>i>_>d>s>b

print(yangyang)

l=['zhukun_dsb']

?res='>'.join(l)

print(res)

name='egon'

age='18'

7.replace? 指定將字符串中的子字符替換成新的子字符懊直,產(chǎn)生了一個(gè)新的字符串。

msg = "***egon hello***"

res=msg.replace('*','').replace(' ','')

res=msg.strip('*').replace(' ','')

print(res)

s="lxx hahah wocale lxx sb 666"

res=s.replace('lxx','sb')

?res=s.replace('lxx','sb',1)

print(res)

print(s)

8.isdigit:判斷字符串是否由純數(shù)字組成

print("asdasdjsdkf54654".isdigit())? ? False

print('5454564546'.isdigit())? ? ? ? ? True


了解

1.find rfind index rindex count

1.1 find :從指定范圍內(nèi)查找子字符串的其實(shí)索引值火鼻,找到返回該數(shù)字的索引值室囊,找不到返回?cái)?shù)字-1

msg='tony say hello'

print(msg.find('m'))

print(msg.find('s'))

find還可以指定查找索引的范圍

print(msg.find('s',0,5))? #找不到返回?cái)?shù)字-1

print(msg.find('s',0,6))? #找不到返回?cái)?shù)字5

1.2 index : 與find一樣 功能都是查找子字符串在字符串中的索引值,但是找不到會(huì)報(bào)錯(cuò)魁索,所以一般推薦用find

print(msg.index('s'))

print(msg.index('m'))

也可以指定查找范圍

print(msg.index('s',0,6))

print(msg.index('s',0,5))

1.3 rfind rindex? 作用是從右到左查找子字符串在字符串中的位置融撞,輸出結(jié)果與find index 結(jié)果相同

print(msg.rfind('s'))? ? # 5

print(msg.rindex('s'))? ? #5

1.4 count 作用是統(tǒng)計(jì)子字符串在字符串中出現(xiàn)的次數(shù)

msg='tony say hello'

print(msg.count('x'))? #0

print(msg.count('l'))? #2

print(msg.count('l',0,-1))? #也可以指定查找范圍

2.center ljust rjust zfill

2.1? center? 作用是指定字符串的打印長度,并且字符串居中顯示粗蔚,不夠的可以用指定的字符填充

name='tony'

print(name.center(30,'*'))? #*************tony*************? ? ? 總長度為30個(gè)字符

2.2 ljust 作用是指定字符串的打印長度尝偎,并且字符串左對(duì)齊,不夠的用指定字符填充

print(name.ljust(20,'='))? #tony================ 總長度為20個(gè)字符

2.3 rjust 作用是指定字符串的打印長度鹏控,并且字符串右對(duì)齊致扯,不夠的用指定字符填充

print(name.rjust(10,'&'))? #&&&&&&tony? 總長度為10字符

2.4 zfill? 作用是指定字符串的打印長度,并且字符串右對(duì)齊当辐,不夠的用0填充

print(name.zfill(20))? # 0000000000000000tony? 總長度為20

3.expandtabs? 作用是修改制表符代表空格數(shù)? 疑問:制表符代表多少空格

name1='hello\tword'

print(name1)? ? #'hello? ? word'

print(name1.expandtabs(1))? #hello word

4.capatalize swapcase? title

4.1 captalize 首字母大寫

name='egoN read'

print(name.capitalize())? #Egon read

4.2 swapcase? 作用是將字符串的大小寫轉(zhuǎn)換過來

print(name.swapcase())? #EGOn READ

4.3 title? 每個(gè)單詞的首字母大寫

print(name.title())? #Egon Read

5.is 數(shù)字系列

在python3中

num1=b'4'

print(num1)? ? #bytes

num2=u'4'

print(num2)? #unicode,在python3中無需加u就是Unicode

num3='四' #中文數(shù)字

print(num3)

num4='Ⅷ' #羅馬數(shù)字

print(num4)

num9='III'

print(num4==num9)? ?False

5.1 isdigit 判斷字符串是否由純數(shù)字組成

print(num1.isdigit())

print(num2.isdigit())

print(num3.isdigit())? #False

print(num4.isdigit())? #False

5.2? isdecimal判斷字符串是否為Unicode類型bytes類型無isdecimal方法

print(num2.isdecimal())? #True

print(num3.isdecimal())? #False

print(num4.isdecimal())? #False

5.3 isnumberic 判斷字符串是否為unicode 中文數(shù)字?羅馬數(shù)字(百度教你打的羅馬字符是錯(cuò)誤的) (bytes類型無isnumberic方法)??

print(num2.isnumeric())? #True

print(num3.isnumeric())? #True

print(num4.isnumeric())? #False

三者都無法判斷浮點(diǎn)型

num5='4.3'

print(num5.isdigit())

print(num5.isdecimal())

print(num5.isnumeric())

全部為False

總結(jié):最常用的是isdigit抖僵,可以判斷bytes和Unicode類型,這也是最常見的數(shù)字應(yīng)用場(chǎng)景

如果要判斷中文數(shù)字或羅馬數(shù)字缘揪,則需要用到isnumeric耍群。

6 is其他

name='tony123'

print(name.isalnum())? ? #字符串中既可以包含數(shù)字也可以包含字母

# True

print(name.isalpha())? ? #字符串是否只包含字母

# False

print(name.isidentifier())? #? ? ? ????

# True

print(name.islower())? ? #字符串是否為純小寫

print(name.isupper())? ? #字符串是否為純大寫

print(name.isspace())? ? #字符串是否全為空格

print(name.istitle())? ? #字符串中的單詞首字母是否全為大寫

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市找筝,隨后出現(xiàn)的幾起案子蹈垢,更是在濱河造成了極大的恐慌,老刑警劉巖袖裕,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件曹抬,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡陆赋,警方通過查閱死者的電腦和手機(jī)沐祷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門嚷闭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人赖临,你說我怎么就攤上這事胞锰。” “怎么了兢榨?”我有些...
    開封第一講書人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵嗅榕,是天一觀的道長。 經(jīng)常有香客問我吵聪,道長凌那,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任吟逝,我火速辦了婚禮帽蝶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘块攒。我一直安慰自己励稳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開白布囱井。 她就那樣靜靜地躺著驹尼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪庞呕。 梳的紋絲不亂的頭發(fā)上新翎,一...
    開封第一講書人閱讀 50,021評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音住练,去河邊找鬼地啰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛澎羞,可吹牛的內(nèi)容都是我干的髓绽。 我是一名探鬼主播敛苇,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼妆绞,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了枫攀?” 一聲冷哼從身側(cè)響起括饶,我...
    開封第一講書人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎来涨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蹦掐,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鳖粟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年榄攀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了檩赢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瘾敢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤典蜕,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布伙菜,位于F島的核電站火的,受9級(jí)特大地震影響公你,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜剪芥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望净捅。 院中可真熱鬧蛔六,春花似錦、人聲如沸废亭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽豆村。三九已至液兽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間掌动,已是汗流浹背四啰。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坏匪,地道東北人拟逮。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像适滓,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子恋追,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350