Python學習之str 以及常用的命令
str 字符串
例如:
name = "adam"
name1 = "周大福"
命令語句的條件參數(shù)配置格式
center(self,width,fillchar= None)
self:可以直接忽略
width:必須有參數(shù)
fillchar= None:可以不用單獨設置參數(shù)
凡有參數(shù) = None的 都可以理解為 可以不用單獨設置此參數(shù)
str 里有一些常用的命令
1、capitalize
首字母大寫
name = "adam" v = name.capitalize() #name內的字符串首字母大寫 print(type(v),v)
2、casefold和lower
所有變小寫
name = "aDam" v = name.casefold() #name內的字符串變成小寫(它可以處理不同的語種內的字母大小寫) print(type(v),v) name = "aDam" v2 = name.lower() #name內的字符串變成小寫(它只能處理英文) print(type(v2),v2)
3、center
設置字符串長度并將內容劇中,空白位置進行填充并且何可設置填充的符號默認填充空格
name = "adam" v = name.center(25,"+") #在name賦值的字符串的前后各增加加號 ,使得整體字符串占一共有8個字符之前name的賦值字符串劇中,并且賦值給v print(type(v),v)
4、count
尋找字符串中的子序列或字符出現(xiàn)的次數(shù),并可以設置起始的尋找位數(shù)
name = "adam"
v = name.count('a',2,4) #計算a在name賦值的字符串內 出現(xiàn)過多少次,不寫(,2,4)的話默認是沖頭到位找,寫了就是從地2到4位尋找
print (v)
5、endswith和startswith
endswith 判斷結尾的字符是什么 可以設置 起始位置
startswith 判斷開頭的字符是什么 可以設置 起始位置 注意設置的開始位置要前移一個單位
name = "adam"
v = name.endswith('d',1,2) #判斷 name賦值的字符串 從第一個字符到第二個字符結束 結尾的字母是不是d
v1 = name.startswith('a',0,2)#判斷name賦值的字符串,從第0位到第2位 是不是以 字母a開頭
print (v)
print (v1)
6、expandtabs
將\t 前面字符位數(shù)用空格補至x位 ,如\t 前字符位數(shù)等于x 則 直接用x個空格替換\t 如\t前字符位數(shù)大于x 則在前面字符最末尾補x余數(shù)個空格(輸出結果不再顯示\t)
test = '12345\t6789' v = test.expandtabs(8) v1 = test.expandtabs(3) v2 = test.expandtabs(5) print(v) print(v1) print(v2) #應用實例: test = '姓名\t性別\t身高\n張三\t男\(zhòng)t180\n張三\t男\(zhòng)t180\n張三\t男\(zhòng)t180' v = test.expandtabs(10) print(v)
7、find
從頭往后找到第一個子序列獲取其前面有多少個字符,也可以規(guī)定尋找范圍,設定的搜索范圍邏輯關系位 起始位數(shù) <= 被搜索范圍 <結束位置。
name = "adamadamadam" #創(chuàng)建變量name并賦值adamadamadam
v = name.find('ma',6,9) #設定搜索ma子序列從6到8位
print (v) #顯示v的值
#結果為:7
PS:當find找不到目標子序列的時候會賦值位-1而另一個尋找命令index在找不到目標子序列時會直接程序報錯,所以推薦使用find命令
8、format
格式化,將一個字符串中的占位符替換為指定的值“大括號內的就是占位符”
name = "adam" #創(chuàng)建變量name并賦值為adam
xingBie = "男" #創(chuàng)建變量xingBie并賦值為"男"
xianShi = "I am {name1},{xingBie1}" #創(chuàng)建變量xianShi并賦值為"I am {name1},{xingBie1}"
print(xianShi) #顯示xianShi
#結果:I am {name1},{xingBie1}
v = xianShi.format(name1 = name ,xingBie1 = xingBie) #使用變量name和xingBie替換xianShi變量中的name1和xingBie1,并且賦值給v
print(v) #顯示v
#結果:I am adam,男
format的另一種書寫格式,可以使用數(shù)字占位,并且在賦值的時候程序會默認依次對數(shù)字賦值,創(chuàng)建占位符號時需要從0開始使用數(shù)字占位
name = "adam" #創(chuàng)建變量name并賦值為adam
xingBie = "男" #創(chuàng)建變量xingBie并賦值為"男"
xianShi = "I am {0},{1}" #創(chuàng)建變量xianShi并賦值為"I am {0},{1}"
print(xianShi) #顯示xianShi
#結果:I am {0},{1}
v1 = xianShi.format(name ,xingBie) #使用變量name 和 xingBie的值替換xianShi中的 0 和 1的值,并且賦值給v1
print(v1) #顯示v1
#結果:I am adam,男
9、format_map
(字典)。。。。。
name = "adam" #創(chuàng)建變量name并賦值為adam
xingBie = "男" #創(chuàng)建變量xingBie并賦值為"男"
xianShi = "I am {name1},{xingBie1}" #創(chuàng)建變量xianShi并賦值為"I am {name1},{xingBie1}"
print(xianShi) #顯示xianShi
v = xianShi.format(name1 = name ,xingBie1 = xingBie) #使用變量name和xingBie替換xianShi變量中的name1和xingBie1,并且賦值給v
print(v) #顯示v
#結果:I am adam,男
v1 = xianShi.format_map({'name1':name,'xingBie1':xingBie}) #使用format_map的格式給v1賦值
print(v1) #顯示v1
#結果:I am adam,男
10、isalnum
判斷字符串中是否只有字母 或 數(shù)字,輸出布爾值
name = 'adam123' #給變量name賦值adam name1 = 'adam+' #給name1賦值adam+ name2 = 'adam' name3 = '123' v = name.isalnum() #判斷name中是否只含有字母或數(shù)字,并把布爾值賦值給v v1 = name1.isalnum() #判斷name1中是否只含有字母或數(shù)字,并把布爾值賦值給v1 v2 = name2.isalnum() v3 = name3.isalnum() print(v) print(v1) print(v2) print(v3)
11、isalpha
判斷字符串中是否只含有字母 或 漢字,輸出布爾值
name = 'adam123' #給變量name賦值adam123 name1 = 'adam+' #給name1賦值adam+ name2 = 'adam' #給name2賦值adam name3 = '張三' #給name3賦值張三 v = name.isalpha() v1 = name1.isalpha() v2 = name2.isalpha() v3 = name3.isalpha() print(v) print(v1) print(v2) print(v3)
12、isdecimal、isdigit、isnumeric
他們時用來判斷字符串是否只是數(shù)字輸出布爾值
isdecimal :只能判斷阿拉伯數(shù)字為 真 (推薦用這個比較準)
isdigit:阿拉伯數(shù)字和符號數(shù)“123和③” 為真
isnumeric:阿拉伯數(shù)字、符號數(shù)字、羅馬數(shù)字、漢字數(shù),均為真“123、③、Ⅲ、四”
test1 = '123' #賦值 test2 = '1a' #這個也可以是16進制數(shù) test3 = '②' #符號數(shù)字 ② test4 = 'Ⅲ' #羅馬數(shù)字3,這是一個字符 test5 = '四' #漢字數(shù)字四 vecimal1 = test1.isdecimal() #判斷字符串是否為數(shù)字 vecimal2 = test2.isdecimal() vecimal3 = test3.isdecimal() vecimal4 = test4.isdecimal() vecimal5 = test5.isdecimal() vigit1 = test1.isdigit() #判斷字符串是否為數(shù)字 vigit2 = test2.isdigit() vigit3 = test3.isdigit() vigit4 = test4.isdigit() vigit5 = test5.isdigit() vnumeric1 = test1.isnumeric() vnumeric2 = test2.isnumeric() vnumeric3 = test3.isnumeric() vnumeric4 = test4.isnumeric() vnumeric5 = test5.isnumeric() print(vecimal1, vecimal2, vecimal3, vecimal4, vecimal5) #打印isdecimal判斷的結果 print(vigit1, vigit2, vigit3, vigit4, vigit5) #打印isdigit判斷的結果 print(vnumeric1, vnumeric2, vnumeric3, vnumeric4, vnumeric5)
13、isidentifier
測試字符串是不是以 字母數(shù)字下劃線組成并且不以字母或下劃線開頭
PS:這個命令不會因為 字符串是python的關鍵字 就判斷為假
print( "if".isidentifier() ) print( "def".isidentifier() ) print( "class".isidentifier() ) print( "_a".isidentifier() ) print( "中國123a".isidentifier() ) print( "123".isidentifier() ) print( "3a".isidentifier() ) print( "".isidentifier() )
14、islower、lower、isupper、upper
islower 判斷字符串是否全部為小寫
lower 把字符串內所有字符所有字符變成小寫
isupper 判斷字符串是否全部為大寫
upper 把字符串內所有字符所有字符變成大寫
name = 'Adam'
name1 = 'ADAM'
name2 = 'adaM'
name3 = 'aDam'
v = name.islower()
v1 = name1.islower()
v2 = name2.islower()
v3 = name3.islower()
print('Adam',v,'ADAM',v1,'adaM',v2,'aDam',v3)
x = name.lower()
x1 = name1.lower()
x2 = name2.lower()
x3 = name3.lower()
print('Adam',x,'ADAM',x1,'adaM',x2,'aDam',x3)
n = name.isupper()
n1 = name1.isupper()
n2 = name2.isupper()
n3 = name3.isupper()
print('Adam',n,'ADAM',n1,'adaM',n2,'aDam',n3)
k = name.upper()
k1 = name1.upper()
k2 = name2.upper()
k3 = name3.upper()
print('Adam',k,'ADAM',k1,'adaM',k2,'aDam',k3)
15、isprintable
判斷字符串中是否含有不可見或不可打印的 字符比如 \n \t 等
print('\tabc'.isprintable())
print('abc\n'.isprintable())
print('\tabc\n'.isprintable())
print('abc'.isprintable())
16、isspace
判斷字符串是否全部都是空格
test = ' ' test1 = ' a' test2 = ' a ' test3 = '' v = test.isspace() v1 = test1.isspace() v2 = test2.isspace() v3 = test3.isspace() print(v,v1,v2,v3) #True False False False
17、istitle、title
istitle 判斷是否為標題(所有單詞首字母均為大寫)
title 將字符串轉換成標題也就是把所有字母的 首字母轉換成大寫
test = 'wo shi zhang san , wo ba sui le ' v = test.istitle() print(v) #False v1 = test.title() print(v1) #Wo Shi Zhang San , Wo Ba Sui Le v2 = v1.istitle() print(v2) #True
18、join
在字符與字符 中間加上 設置好的間隔符當變量值中只有一個字符的時候則什么都不做,可以設置添加的符號
test = '我是張三,我八歲了' test1 = '我' print(test) #我是張三,我八歲了 x = ' ' v = x.join(test) print(v) #我 是 張 三 , 我 八 歲 了 v1 = x.join(test1) print(v1) #我
19、ljus、rjust、center、zfill
ljust 字符串靠左對齊 不夠位數(shù)的用設置的字符補齊
rjust 字符串靠右對齊 不夠位數(shù)的用設置的字符補齊
center 字符串劇中對齊 不夠位數(shù)的用設置的字符補齊,如果只需要補1個字符,則補在字符串左側
zfill 只能在字符串左側填充0
name = 'adam' v = name.ljust(6,'*') #文字左對齊 不至6位用*補位 v1 = name.rjust(6,'*') #文字右對齊 不至6位用*補位 v2 = name.center(6,'*') #文字劇中 不至6位用*補位 v3 = name.zfill(6) #文字右對齊 不至6位用*補位 print(v,v1,v2,v3) #adam** **adam *adam* 00adam
20、lstrip 、rstrip、strip
lstrip 從左向右匹配刪除空格,直到遇到不匹配的那個字符
rstrip 從右向左匹配刪除空格,直到遇到不匹配的那個字符
strip 去掉兩側的空格
PS:他們還可以去掉 /t /n這樣的功能符(默認下),還可以指定去掉任意字符,匹配原則是 優(yōu)先最多匹配原則
name = ' ad am ' v = name.lstrip() #去掉左側的空格直到遇到其他字符 v1 = name.rstrip() #去掉右側的空格直到遇到其他字符 v2 = name.strip() #去掉兩側的空格直到遇到其他字符 print(v) #ad am print(v1) # ad am print(v2) #ad am
21、translate、maketrans
translate:執(zhí)行映射轉換
maketrans:創(chuàng)建映射轉換關系,先寫入原字符表,再寫入要轉換成的字符表,也可以再定義一個需要刪除的字符表
yuanZiFu = 'abcde' #定義原始匹配字符 bianGengZiFu = '12345' #定義匹配后變更的字符 shanChuZiFu = 'fghij' #定義原始匹配刪除的字符 zhuanHuanBiao = str.maketrans(yuanZiFu,bianGengZiFu) #創(chuàng)建字符映射轉換表(匹配yuanZiFu轉換成bianGengZiFu) zhuanHuanShanChuBiao = str.maketrans(yuanZiFu,bianGengZiFu,shanChuZiFu) #創(chuàng)建字符映射轉換刪除表(匹配yuanZiFu轉換成bianGengZiFu刪除shanChuZiFu) yuanShiZiFuChuan = 'a1b2c3d4e5fagbhcidje' #創(chuàng)建原始字符串 print(yuanShiZiFuChuan.translate(zhuanHuanBiao)) #1122334455f1g2h3i4j5 print(yuanShiZiFuChuan.translate(zhuanHuanShanChuBiao)) #112233445512345
22、partition、rpartition、split、rsplit、splitlines() 、splitlines(True) 、splitlines(Fales)
partition 把字符串分割為3份 從字符串的左側向右尋找 設置的分隔符號 進行分割,分割符號會被單獨分割成中間的那部分
rpartition 把字符串分割為3份 從字符串的右側向左尋找 設置的分隔符號 進行分割,分割符號會被單獨分割成中間的那部分
ps partition和rpartition需要設置分割符
split 可以指定分割的塊數(shù) 左側向右尋找分割符號 默認是匹配的所有分割符號 全部都進行分割 且分割符號并不會出現(xiàn)在結果中
rsplit 可以指定分割的塊數(shù) 右側向左尋找分割符號 默認是匹配的所有分割符號 全部都進行分割 且分割符號并不會出現(xiàn)在結果中
ps:分割符默認為所有的空字符,包括空格、換行(\n)、制表符(\t)等。
splitlines() 默認根據(jù)換行符號\n 進行分割 且不會保留換行符號
splitlines(True) 根據(jù)換行符號\n 進行分割 且保留換行符號 換行符號出現(xiàn)在被分割模塊的右側splitlines(Fales) 根據(jù)換行符號\n 進行分割 且不會保留換行符號
x1 = '123\n45\t123\n45\t123\n45\t123\n45'
print(x1.partition('5')) #('123\n4', '5', '\t123\n45\t123\n45\t123\n45')
print(x1.rpartition('5')) #('123\n45\t123\n45\t123\n45\t123\n4', '5', '')
print(x1.split('\n',3)) #['123', '45\t123', '45\t123', '45\t123\n45']
print(x1.rsplit('\t',2)) #['123\n45\t123\n45', '123\n45', '123\n45']
print(x1.splitlines()) #['123', '45\t123', '45\t123', '45\t123', '45']
print(x1.splitlines(True)) #['123\n', '45\t123\n', '45\t123\n', '45\t123\n', '45']
print(x1.splitlines(False)) #['123', '45\t123', '45\t123', '45\t123', '45']
23、swapcase
大小寫轉換 ,把字符串里面的大小寫全部轉換
name = 'Adam' v = name.swapcase() print(v) #aDAM
24、replace
替換,從左往右尋找匹配的子序列,然后全部進行替換,可以設定替換幾個,("原變量中的子序列","替換后的子序列",替換幾個子序列)
name = 'adamadamadam'
v = name.replace('da','yyy')
print(v) #ayyymayyymayyym
PS:匹配原則最長公共子序列 兩個或多個字符串內 最長的相同的子序列
總結
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!
相關文章
matplotlib運行時配置(Runtime Configuration,rc)參數(shù)rcParams解析
這篇文章主要介紹了matplotlib運行時配置(Runtime Configuration,rc)參數(shù)rcParams解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01
Python實現(xiàn)簡單的列表冒泡排序和反轉列表操作示例
這篇文章主要介紹了Python實現(xiàn)簡單的列表冒泡排序和反轉列表操作,涉及Python列表遍歷、排序、追加等相關操作技巧,需要的朋友可以參考下2019-07-07
python實現(xiàn)替換word中的關鍵文字(使用通配符)
今天小編就為大家分享一篇python實現(xiàn)替換word中的關鍵文字(使用通配符),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python中的map()函數(shù)和reduce()函數(shù)的用法
這篇文章主要介紹了Python中的map()函數(shù)和reduce()函數(shù)的用法,代碼基于Python2.x版本,需要的朋友可以參考下2015-04-04

