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 partitionrpartition需要設置分割符

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的更多內容!

推薦閱讀: