Python基礎之字串操作常用函式集合
Python字串常用功能彙總
1、字串的定義
#定義空字串
>>> name=''
#定義非空字串 >>> name="luoahong"
#通過下標訪問 >>> name[1] 'u'
#不能修改字串的值,否則會報錯 >>> name[2] = "3" Traceback (most recent call last): File "<stdin>",line 1,in <module> TypeError: 'str' object does not support item assignment
特別提醒:字串如果修改的話,字串所在的記憶體地址也跟著變化,所以不可被修改,但是對於列表來說,可以修改是因為列表的記憶體是不變的,可以直接在上面修改
2、切片
特別提醒:字串其實和列表,元組一樣,也是可以切片的
>>> name="ahong luo" >>> name[1:4] #取1到4之間的字元,包括1,不包括4 'hon' >>> name[1:-1] #取1到-1之間的字元,包括1,不包括-1 'hong lu' >>> name[0:3] 'aho' >>> name[:3] #從頭開始取,0可以省略,效果等同於name[0:3] 'aho' >>> name[3:] #想取到最後一個值,必須不能寫-1,只能這麼寫 'ng luo' >>> name[0::2] #後面的2表示:每隔一個字元就取一個 'aoglo' >>> name[::2] #從頭開始0可以省略,效果跟上一句一樣 'aoglo'
3、首字母大寫(capitalize())
>>> name="ahong luo" >>> name.capitalize() 'Ahong luo' >>>
4、統計(count(sub,start=None,end=None))
sub:統計的字元,start:開始位,end:結束位,start和end預設為空時,則表示全部字元中去統計
>>> name="ahong luo"
#有開始和結束符
>>> name.count("o",1,5) 1
#從整個字串中統計字元 >>> name.count("o")2 >>>
5、center(width,fillchar)
如果width(字元寬度)小於等於(<=)字串的長度,則返回原字串,如果大於(>)字串的,則用fillchar(填滿字元)填滿,處理結果等於width,字串位於fillchar的中間
>>> name="ahong luo" >>> len(name) 9
#10小於等於字串寬度 >>> name.center(12,'-') '-ahong luo--'
#50大於字串長度,並且字串位於填充字元的中間 >>> name.center(50,'-') '--------------------ahong luo---------------------' >>> len(name.center(50,'-')) 50
6、ljust(width,fillchar)
如果字串的長度大於width(字元寬度),則返回原字串,如果小於width,則用fillchar(填滿字元)填滿,處理結果等於width,fillchar位於字串的最右邊
>>> name="ahong luo" >>> len(name) 9
#小於等於字串的長度 >>> name.ljust(8,'-') 'ahong luo'
#大於字串的長度 >>> name.ljust(50,'-') 'ahong luo-----------------------------------------'
特別提醒:ljust中的l表示left的意思,表示從右向左
7.rjust(width,fillchar)
如果字串的長度大於width(字元寬度),則返回原字串,如果小於width,則用fillchar(填滿字元)填滿,處理結果等於width,fillchar位於字串的最左邊
>>> name="ahong luo"
>>> len(name) 9 >>> name.rjust(8,'-') 'ahong luo' >>> name.rjust(50,'-') '-----------------------------------------ahong luo'
特別提醒:ljust中的l表示left的意思,表示從左向右
8、編碼(encode)
字串的編碼和解碼,在這邊不用說了,我專門寫了一篇部落格,詳細地址:猛擊這裡
9、endwith(suffix,end=None)
判斷是否已suffix結尾,是返回True,否返回Fales
suffix:表示字元,start:開始位,end:結束位,start和end預設為空是,表示從整個字串的結尾去判斷>>> name="ahong luo"
>>> name.endswith('0',4) False
>>> name.endswith('o') True >>> name.endswith('o',4) False
10、find(sub,end=None)
全文查詢sub中第一個字元所在整個字串中的索引值,沒有找到則返回-1
sub:字元或者字串,start:開始位,end:結束位,start和end預設為空時,則在整個字串中查詢
>>> name="ahong luo"
#沒找到,則返回-1 >>> name.find("lu",4) -1 >>> name.find("a",2) -1 >>> name.find("lu") 6 >>> name.find("lu",6) -1 >>> name.find("lu",10) 6 >>>
11、rfind(sub,end=None)
從左向右查詢sub中第一個字元所在整個字串中的索引值,沒有找到則返回-1
>>> name="ahong luo"
#找到 >>> name.rfind("a") 0
#未找到 >>> name.rfind("a",2) -1
12、format()
①關鍵字拼接也是官方推薦 1 2 3 4 5 6 7 8 9 name = "alex" age = 18 info = '''----info----- name:{_name} age:{_age} '''.format(_name=name,_age=age) print(info) ②佔位符拼接 1 2 3 4 5 6 7 8 9 name = "alex" age = 18 info = '''----info----- name:{0} age:{1} '''.format(name,age) print(info)
13、format_map()
資料格式,以字典形式傳入
>>> name="name:{name},age:{age}" >>> name.format_map({"name":"luoahong",'age':23})
#輸出結果 'name:luoahong,age:23'
14、isalnum()
是否是一個阿拉伯數字和字母,它包含因為英文字元+(1-9)數字,中間不能有特殊字元
>>> age='23' >>> age.isalnum() True
#有特殊字元的 >>> age='ab23' >>> age='ab' >>> age.isalnum() True >>> age='ab' >>> age.isalpha() True >>>
15、isalpha()
是否是一個純的英文字元,包含大寫
>>> age = 'ab' >>> age.isalpha() True #夾著數字 >>> age = 'ab23' >>> age.isalpha() False #大寫 >>> age = 'Ab' >>> age.isalpha() True
16、isdigit()
判斷是否是一個整數
17、isspace()
判斷是否是一個空格
#不是空格 >>> age = ' age' >>> age.isspace() False #是空格 >>> age = ' ' >>> age.isspace() True
18、istitle()
是否是一個標題(字串中的每個單子首字母大寫)
#每個單詞的首字母是小寫
>>> name="luoahong" >>> name.istitle() False >>> name="luo a hong" >>> name.istitle() False
#每個單詞的首字母大寫 >>> name="Luo A Hong" >>> name.istitle() True >>> name="Luoahong" >>> name.istitle() True
19、isupper()
是否是大寫,注意字串必須全部是大寫才會返回True,否則返回False
#全部大寫
>>> name="LUO" >>> name.isupper() True
#小寫 >>> name="Luo" >>> name.isupper() False >>>
20、join()
序列用某個字元拼接成一個字串,注意的是,序列的元素必須是str型別
>>> a = ['1','2','3'] >>> '+'.join(a) '1+2+3'
21、lower()
字串中的大寫字母轉換為小寫字母
>>> name="LuoAHong" >>> name.lower() 'luoahong' >>>
22、upper()
字串中的小寫字母轉換為大寫字母
>>> name="LuoAHong" >>> name.upper() 'LUOAHONG'
23、strip()
去掉左右兩邊的空格(space)和回車(\n)
>>> name= " \n luoahong \n" >>> name.strip() 'luoahong'
24、lstrip()
刪掉左邊到右的空格(space)和回車(\n)
>>> name= " \n luoahong \n" >>> name.lstrip() 'luoahong \n'
25、rstrip()
刪掉右邊到左邊的空格(space)和回車(\n)
>>> name= " \n luoahong \n" >>> name.rstrip() ' \n luoahong'
至此,方法前有l(left)和r(right)的函式,都是對之前函式的一個擴充套件,帶l的表示至始至終從右到左操作,記住左邊才是最終目的地,而帶r的至始至終都是從左到右,因為右邊才是它的終極目標
26、split()
分割函式,預設是以空格分割(space)生成一個列表,如果其他字元分割,輸入其他字元引數
>>> name="ahong luo"
#預設為空,按空格分割 >>> name.split() ['ahong','luo'] >>> name="ahong+luo"
#以"+"字元分割
>>> name.split("+") ['ahong','luo']
#以'\n'分割 >>> name="ahong\nluo" >>> name.split("\n") ['ahong','luo']
27、splitlines()
以換行符分割,這個一般在windows上開發,移到Linux上執行,或者在Linux上開發,移到Windows上執行,因為換行在windows上是"\r\n",linux上是'\n'
>>> name="ahong\nluo" >>> name.splitlines() ['ahong','luo']
28、swapcase()
把大寫換成小寫,把小寫換成大寫
>>> name="Luo" >>> name.swapcase() 'lUO'
29、startswith(prefix,end=None)
判斷是否以prefix開始,是返回True,否返回Fales
prefix:表示字元或者字元或者字串,start:開始位,end:結束位,start和end預設為空是,表示從整個字串的結尾去判斷
>>> name="ahong luo" >>> name.startswith("luo") #開頭找到"luo"字串 False >>> name.startswith("h",3,5) #在索引3到5之間沒有找到以字元'h'開頭 False
30、replace(old,new[, max])
old:將被替換的子字串; new:新字串,用於替換old子字串;max:可選字串,替換不超過 max 次
>>> name="wo shi luo a hong" >>> name.replace("shi","bushi") 'wo bushi luo a hong'
#原字串沒有改變 >>> name.replace("shi","bushi",0) 'wo shi luo a hong' >>> name.replace("shi",1) 'wo bushi luo a hong'
31、zfill(width)
字元的長度是否大於等於(>=)with,如果比width小,則在字串錢用0填充,如果>=width,則返回原字串
>>> name="luoahong" >>> len(name) 8
#width大於字串長度 >>> name.zfill(11) '000luoahong'
#width小於等於字串長度 >>> name.zfill(8) 'luoahong' >>>