Python學習之str 以及常用的命令
str 字符串
例如:
name = “adam”
name1 = “周大福”
命令語句的條件參數配置格式
center(self,width,fillchar= None)
self:
可以直接忽略
width:
必須有參數
fillchar= None:
可以不用單獨設置參數
凡有參數 = None的 都可以理解為 可以不用單獨設置此參數
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
尋找字符串中的子序列或字符出現的次數,並可以設置起始的尋找位數
name = "adam" v = name.count('a',2,4) #計算a在name賦值的字符串內 出現過多少次,不寫(,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 前面字符位數用空格補至x位 ,如\t 前字符位數等於x 則 直接用x個空格替換\t 如\t前字符位數大於x 則在前面字符最末尾補x餘數個空格(輸出結果不再顯示\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男\t180\n張三\t男\t180\n張三\t男\t180' v = test.expandtabs(10) print(v)
7、find
從頭往後找到第一個子序列獲取其前面有多少個字符,也可以規定尋找范圍,設定的搜索范圍邏輯關系位 起始位數 <= 被搜索范圍 <結束位置。
name = "adamadamadam" #創建變量name並賦值adamadamadam v = name.find('ma',6,9) #設定搜索ma子序列從6到8位 print (v) #顯示v的值 #結果為:7
PS:當find找不到目標子序列的時候會賦值位-1而另一個尋找命令index在找不到目標子序列時會直接程序報錯,所以推薦使用find命令
8、format
格式化,將一個字符串中的占位符替換為指定的值“大括號內的就是占位符”
name = "adam" #創建變量name並賦值為adam xingBie = "男" #創建變量xingBie並賦值為"男" xianShi = "I am {name1},{xingBie1}" #創建變量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的另一種書寫格式,可以使用數字占位,並且在賦值的時候程序會默認依次對數字賦值,創建占位符號時需要從0開始使用數字占位
name = "adam" #創建變量name並賦值為adam xingBie = "男" #創建變量xingBie並賦值為"男" xianShi = "I am {0},{1}" #創建變量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" #創建變量name並賦值為adam xingBie = "男" #創建變量xingBie並賦值為"男" xianShi = "I am {name1},{xingBie1}" #創建變量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
判斷字符串中是否隻有字母 或 數字,輸出佈爾值
name = 'adam123' #給變量name賦值adam name1 = 'adam+' #給name1賦值adam+ name2 = 'adam' name3 = '123' v = name.isalnum() #判斷name中是否隻含有字母或數字,並把佈爾值賦值給v v1 = name1.isalnum() #判斷name1中是否隻含有字母或數字,並把佈爾值賦值給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
他們時用來判斷字符串是否隻是數字輸出佈爾值
isdecimal
:隻能判斷阿拉伯數字為 真 (推薦用這個比較準)
isdigit
:阿拉伯數字和符號數“123和③” 為真
isnumeric
:阿拉伯數字、符號數字、羅馬數字、漢字數,均為真“123、③、Ⅲ、四”
test1 = '123' #賦值 test2 = '1a' #這個也可以是16進制數 test3 = '②' #符號數字 ② test4 = 'Ⅲ' #羅馬數字3,這是一個字符 test5 = '四' #漢字數字四 vecimal1 = test1.isdecimal() #判斷字符串是否為數字 vecimal2 = test2.isdecimal() vecimal3 = test3.isdecimal() vecimal4 = test4.isdecimal() vecimal5 = test5.isdecimal() vigit1 = test1.isdigit() #判斷字符串是否為數字 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
測試字符串是不是以 字母數字下劃線組成並且不以字母或下劃線開頭
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
字符串靠左對齊 不夠位數的用設置的字符補齊
rjust
字符串靠右對齊 不夠位數的用設置的字符補齊
center
字符串劇中對齊 不夠位數的用設置的字符補齊,如果隻需要補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這樣的功能符(默認下),還可以指定去掉任意字符,匹配原則是 優先最多匹配原則
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:
執行映射轉換
maketrans:
創建映射轉換關系,先寫入原字符表,再寫入要轉換成的字符表,也可以再定義一個需要刪除的字符表
yuanZiFu = 'abcde' #定義原始匹配字符 bianGengZiFu = '12345' #定義匹配後變更的字符 shanChuZiFu = 'fghij' #定義原始匹配刪除的字符 zhuanHuanBiao = str.maketrans(yuanZiFu,bianGengZiFu) #創建字符映射轉換表(匹配yuanZiFu轉換成bianGengZiFu) zhuanHuanShanChuBiao = str.maketrans(yuanZiFu,bianGengZiFu,shanChuZiFu) #創建字符映射轉換刪除表(匹配yuanZiFu轉換成bianGengZiFu刪除shanChuZiFu) yuanShiZiFuChuan = 'a1b2c3d4e5fagbhcidje' #創建原始字符串 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
可以指定分割的塊數 左側向右尋找分割符號 默認是匹配的所有分割符號 全部都進行分割 且分割符號並不會出現在結果中
rsplit
可以指定分割的塊數 右側向左尋找分割符號 默認是匹配的所有分割符號 全部都進行分割 且分割符號並不會出現在結果中
ps:分割符默認為所有的空字符,包括空格、換行(\n)、制表符(\t)等。
splitlines()
默認根據換行符號\n 進行分割 且不會保留換行符號
splitlines(True)
根據換行符號\n 進行分割 且保留換行符號 換行符號出現在被分割模塊的右側splitlines(Fales) 根據換行符號\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:匹配原則最長公共子序列 兩個或多個字符串內 最長的相同的子序列
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!