Python 簡明教程 --- 8,Python 字符串函數

微信公衆號:碼農充電站prohtml

我的主頁:https://codeshellme.github.iopython

好代碼自己就是最好的文檔。當你須要添加一個註釋時,你應該考慮如何修改代碼才能不須要註釋。git

—— Steve McConnellgithub

目錄shell

在這裏插入圖片描述

字符串有不少操做函數,因此,這裏咱們專門用一節來介紹這些函數。api

建議:微信

因爲字符串函數較多,對於新手來講,沒必要要一開就掌握全部的函數用法,能夠先粗略的看一遍,有個大概印象,到真正用的着的時候,再來詳細查看也可。用的次數多了,天然就記住了。app

咱們能夠經過dir() 函數來查看一個對象支持的方法屬性有哪些,經過help() 函數查看某個方法的詳情。ssh

注意:
1,對象的概念會在後續章節詳細介紹
2,這裏咱們無需過多的區分函數方法的不一樣,暫時能夠認爲函數方法相同ide

示例:

s = 'abc'	# s 是一個字符串
>>> dir(s)  # 查看字符串支持的方法
['__add__', '__class__', '__contains__', 
'__delattr__', '__dir__', '__doc__', 
'__eq__', '__format__', '__ge__', 
'__getattribute__', '__getitem__', 
'__getnewargs__', '__gt__', '__hash__', 
'__init__', '__init_subclass__', '__iter__', 
'__le__', '__len__', '__lt__', '__mod__', 
'__mul__', '__ne__', '__new__', '__reduce__', 
'__reduce_ex__', '__repr__', '__rmod__', 
'__rmul__', '__setattr__', '__sizeof__', 
'__str__', '__subclasshook__', 
'capitalize', 'casefold', 'center', 
'count', 'encode', 'endswith', 'expandtabs', 
'find', 'format', 'format_map', 'index', 
'isalnum', 'isalpha', 'isdecimal', 'isdigit', 
'isidentifier', 'islower', 'isnumeric', 
'isprintable', 'isspace', 'istitle', 'isupper', 
'join', 'ljust', 'lower', 'lstrip', 'maketrans', 
'partition', 'replace', 'rfind', 'rindex', 
'rjust', 'rpartition', 'rsplit', 'rstrip', 
'split', 'splitlines', 'startswith', 'strip', 
'swapcase', 'title', 'translate', 'upper', 'zfill']

>>> help(s.find)	# 查看字符串的find 方法詳情
Help on built-in function find:

find(...) method of builtins.str instance
    # 方法原型
    # -> 符號以前是參數
    # -> 符號以後時返回值類型
    S.find(sub[, start[, end]]) -> int		
    
    # 方法介紹
    Return the lowest index in S where substring sub is found,
    such that sub is contained within S[start:end].  Optional
    arguments start and end are interpreted as in slice notation.
    
    # 方法返回值
    Return -1 on failure.
(END)

Python 中雙下劃線 樣式的方法__xxx__,被稱爲魔法方法(這裏不作詳細介紹),這裏咱們主要關注非魔法方法

這裏的dir(s) 顯示的全部方法中,除了魔法方法外,還有44 個方法,咱們能夠粗略的將這些方法分爲如下8 類:

  1. 字符串查找
  2. 字符大小寫
  3. 判斷字母數字
  4. 字符串填充
  5. 字符串格式化
  6. 字符串截斷
  7. 字符串分割
  8. 其它方法

下面咱們逐一進行介紹。

1,字符串查找

1.find方法

做用:從左開始查找,返回子串subS[start:end] 中的第一個下標
原型:S.find(sub[, start[, end]]) -> int
參數 sub:子字符串
參數 start:開始位置,可省,默認爲 0
參數 end:結束位置,可省,默認爲 len(S)
返回值:若是找到返回下標,不然返回 -1

示例:

>>> 'abcabcabc'.find('ca')
2      # 找到了,返回下標
>>> 'abcabcabc'.find('bbc')
-1     # 沒找到,返回 -1

2.rfind方法

做用:從右開始查找,返回子串subS[start:end] 中的第一個下標
原型:S.rfind(sub[, start[, end]]) -> int
參數:同 find 方法
返回值:若是找到返回下標,不然返回 -1

示例:

>>> 'abcabcabc'.rfind('ca')
5
>>> 'abcabcabc'.rfind('bbc')
-1

3.index方法

做用:從左開始查找,返回子串subS[start:end] 中的第一個下標
原型:S.index(sub[, start[, end]]) -> int
參數 sub:子字符串
參數 start:開始位置,可省,默認爲 0
參數 end:結束位置,可省,默認爲 len(S)
返回值:若是找到返回下標,不然拋出ValueError 異常

示例:

>>> 'abcabcabc'.index('ca')
2
>>> 'abcabcabc'.index('bbc')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found    # ValueError 異常

關於Python 異常,將在後續章節詳細介紹

4.rindex方法

做用:從右開始查找,返回子串subS[start:end] 中的第一個下標
原型:S.rindex(sub[, start[, end]]) -> int
參數:同index 方法
返回值:若是找到返回下標,不然拋出ValueError 異常

示例:

>>> 'abcabcabc'.rindex('ca')
5
>>> 'abcabcabc'.rindex('bbc')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found

5.count方法

做用:統計子串subS[start:end] 中出現的次數
原型:S.count(sub[, start[, end]]) -> int
參數 sub:子字符串
參數 start:開始位置,可省,默認爲 0
參數 end:結束位置,可省,默認爲 len(S)
返回值:子串出現的次數

示例:

>>> 'abcabcabc'.count('bc')
3

2,字符大小寫

6.capitalize方法

做用:將字符串S的首字符變爲大寫,其他字符變爲小寫,對中文無效
原型:S.capitalize() -> str
參數:無
返回值:新的字符串

示例:

>>> 'AbCdE'.capitalize()
'Abcde'

7.casefold方法

做用:將字符串S中的全部字符變爲小寫,對中文無效
原型:S.casefold() -> str
參數:無
返回值:新的字符串

示例:

>>> 'AbCdE'.casefold()
'abcde'

8.swapcase方法

做用:將字符串S 中的大寫字符轉爲小寫,小寫字符轉爲大寫,對中文無效
原型:S.swapcase() -> str
參數:無
返回值:新的字符串

示例:

>>> 'AbCdE中國'.swapcase()
'aBcDe中國'

9.istitle方法

做用:判斷S 中的單詞,是否全都首字母大寫,且其它字符小寫
原型:S.istitle() -> bool
參數:無
返回值TrueFalse

示例:

>>> 'Abc De fj'.istitle()
False
>>> 'Abc De Fj'.istitle()
True
>>> 'Abc De Fj 中國'.istitle() # 能夠有中文
True
>>> '中國'.istitle()           # 不能只有中文
False

10.title方法

做用:將每一個非字母后的第一個字母變爲大寫
原型:S.title() -> str
參數:無
返回值:新的字符串

示例:

>>> 'a3bc-abc abc'.title()
'A3Bc-Abc Abc'

11.islower方法

做用:判斷S 中的字符是否全是小寫字符
原型:S.islower() -> bool
參數:無
返回值TrueFalse

示例:

>>> 'abc'.islower()
True
>>> 'aBc'.islower()      # 有大寫字符,返回 False
False
>>> 'abc中國'.islower()  # 英文字符全是小寫,且包含中文,返回 True
True
>>> '中國'.islower()     # 只有中文,返回 False
False
>>> ''.islower()
False

12.isupper方法

做用:判斷S 中的字符是否全是大寫字符
原型:S.isupper() -> bool
參數:無
返回值TrueFalse

示例:

>>> 'ABC'.isupper()		# 全部字符全是大寫,返回 True
True
>>> 'Abc'.isupper()     # 有大寫,有小寫,返回 False
False
>>> 'ABC中國'.isupper() # 全部字符全是大寫,幷包含中文,返回 True
True
>>> '中國'.isupper()    # 只有中文,返回 False
False
>>> ''.isupper()       # 空字符串,返回 False
False

13.lower方法

做用:將S 中的全部大寫字符轉爲小寫
原型:S.lower() -> str
參數:無
返回值:新的字符串

示例:

>>> 'AbC'.lower()
'abc'

14.upper方法

做用:將S 中的全部小寫字符轉爲大寫
原型:S.upper() -> str
參數:無
返回值:新的字符串

示例:

>>> 'AbC'.upper()
'ABC'

3,判斷字母數字

15.isalnum方法

做用:判斷S 中全部的字符是否都是字母或數字
原型:S.isalnum() -> bool
參數:無
返回值TrueFalse

示例:

>>> 'abc'.isalnum()       # 英文字符,返回 True
True
>>> 'abc123'.isalnum()	  # 英文字符或數字,返回 True
True
>>> 'abc中國'.isalnum()	  # 英文字符或漢字,返回 True
True
>>> 'abc;'.isalnum()      # 有符號';' 返回 False
False
>>> 'abc-'.isalnum()	  # 有符號'-' 返回 False
False
>>> ''.isalnum()          # 空字符串,返回 False
False

16.isalpha方法

做用:判斷S 中全部的字符是否都是字母
原型:S.isalpha() -> bool
參數:無
返回值TrueFalse

示例:

>>> 'abc'.isalpha()			# 都是英文字符,返回 True
True
>>> 'abc中國'.isalpha()     # 英文字符和漢字,返回 True
True
>>> 'abc中國123'.isalpha()	# 有數字,返回 False
False
>>> 'abc中國-'.isalpha()    # 有符號,返回 False
False
>>> ''.isalpha()            # 空字符串,返回 False
False

17.isdecimal方法

做用:判斷S 中是否只包含十進制字符
原型:S.isdecimal() -> bool
參數:無
返回值TrueFalse

示例:

>>> 'abc'.isdecimal()     # 不包含數字,返回 False
False
>>> 'abc123'.isdecimal()  # 除了數字,還有英文字符,返回 False
False
>>> '123'.isdecimal()     # 只有數字,返回 True
True
>>> '123-'.isdecimal()    # 除了數字,還有符號,返回 False
False
>>> ''.isdecimal()        # 空字符串,返回 False
False
>>> '一二三'.isdecimal()
False

18.isdigit方法

做用:判斷S 中是否只包含數字
原型:S.isdigit() -> bool
參數:無
返回值TrueFalse

示例:

>>> '123'.isdigit()
True
>>> '123e'.isdigit()
False

19.isnumeric方法

做用:判斷S是否只由數字組成,數字能夠是羅馬數字,漢字數字等
原型:S.isnumeric() -> bool
參數:無
返回值TrueFalse

示例:

>>> '一二三'.isnumeric()
True
>>> '壹貳叄'.isnumeric()
True
>>> '123'.isnumeric()
True
>>> 'abc'.isnumeric()
False

20.isidentifier方法

做用:判斷S 是不是有效的Python 標識符
原型:S.isidentifier() -> bool
參數:無
返回值TrueFalse

示例:

>>> 'abc'.isidentifier()
True
>>> '5abc'.isidentifier()	# 不能以數字開頭
False
>>> '_5abc'.isidentifier()
True
>>> ' _5abc'.isidentifier() # 不能以空格開頭
False
>>> '_5abc;'.isidentifier() # 不能有標點符號
False

21.isprintable方法

做用:判斷S 中的字符,是否所有可打印
原型:S.isprintable() -> bool
參數:無
返回值TrueFalse

示例:

>>> 'abc中國'.isprintable()
True
>>> 'abc\n'.isprintable()  # 換行符不可見
False
>>> 'abc\t'.isprintable()  # 製表符不可見
False
>>> 'abc\r'.isprintable()  # 回車符不可見
False

22.isspace方法

做用:判斷S 中是否全是空白字符
原型:S.isspace() -> bool
參數:無
返回值TrueFalse

示例:

>>> '\r\n\t '.isspace()
True
>>> 'abc\r\n\t '.isspace()
False

4,字符串填充

23.center方法

做用:返回一個總長度爲width 的字符串,S 居中,其它字符以fillchar 填充
原型:S.center(width[, fillchar]) -> str
參數 width:新的字符串的總長度,當 width 小於 S 的長度時,直接返回 S
參數 fillchar:填充字符,可省,默認爲空格
返回值:新的字符串

示例:

>>> 'AbCdE'.center(20, '*')
'*******AbCdE********'

24.ljust方法

做用:以S 左對齊,返回一個長度爲width 的新字符串,當len(S) 小於width 時,用fillchar 字符填充
原型:S.ljust(width[, fillchar]) -> str
參數:同 center 方法
返回值:新的字符串

示例:

>>> 'abc'.ljust(5, '*')
'abc**'
>>> 'abc'.ljust(3, '*')
'abc'

25.rjust方法

做用:相似ljust 方法,本方法爲右對齊
原型:S.rjust(width[, fillchar]) -> str
參數:同 center 方法
返回值:新的字符串

示例:

>>> 'abc'.rjust(5, '*')
'**abc'
>>> 'abc'.rjust(3, '*')
'abc'

26.zfill方法

做用:效果同 rjust(width,'0')
原型:S.zfill(width) -> str
參數width 爲新的字符串的總長度
返回值:新的字符串

>>> 'abc'.zfill(5)
'00abc'
>>> 'abc'.rjust(5, '0')
'00abc'

5,字符串格式化

27.format方法

做用:用於格式化字符串,用format 方法中的參數依次替代S 中的大括號{}
原型:S.format(*args, **kwargs) -> str
參數:任意參數列表
返回值:返回格式化後的字符串

示例:

>>> '{} {} {}'.format('hello', 'python', 123)    # {} 中不寫下標
'hello python 123'
>>> '{2} {0} {1}'.format('hello', 'python', 123) # {} 中寫下標
'123 hello python'

28.format_map方法

做用:相似format 方法的做用,只是接受的參數類型不一樣,大括號{} 中必須是字典對象的
原型:S.format_map(mapping) -> str
參數:一個字典類型的對象
返回值:返回格式化後的字符串

示例:

>>> '{a} {b}'.format_map({'a':1, 'b':2})
'1 2'

關於字典類型,將在後續章節詳細介紹

6,字符串截斷

29.lstrip方法

做用:從左開始,截去字符串S 中的字符chars,直到第一個不是chars 的字符
原型:S.lstrip([chars]) -> str
參數chars 能夠是任意長度的字符串,每一個包含在chars 中的字符,都會被截去。可省,默認爲空格
返回值:新的字符串

示例:

>>> 'abcabcabc'.lstrip('b')
'abcabcabc'
>>> 'abcabcabc'.lstrip('a')
'bcabcabc'
>>> 'abcabcabc'.lstrip('ab')
'cabcabc'
>>> 'abcabcabc'.lstrip('abc')
''

30.rstrip方法

做用:從右開始,截去字符串S 中的字符chars,直到第一個不是chars 的字符
原型:S.rstrip([chars]) -> str
參數:同 lstrip
返回值:新的字符串

示例:

>>> 'abcabcabc'.rstrip('b')
'abcabcabc'
>>> 'abcabcabc'.rstrip('c')
'abcabcab'
>>> 'abcabcabc'.rstrip('bc')
'abcabca'
>>> 'abcabcabc'.rstrip('abc')
''

31.strip方法

做用:先執行lstrip 再執行 rstrip
原型:S.strip([chars]) -> str
參數:同 lstrip
返回值:新的字符串

示例:

>>> 'abcabcabc'.strip('b')
'abcabcabc'
>>> 'abcabcabc'.strip('ba')
'cabcabc'
>>> 'abcabcabc'.strip('bac')
''

7,字符串分割

32.strip方法

做用:從左到右,以字符串sep 來分割字符串S,最多分割maxsplit
原型:S.split(sep=None, maxsplit=-1) -> list of strings
參數 sepsep 能夠是任意長度的字符串,默認爲任意空白符
參數 maxsplit:分割的最大次數,默認不限次數
返回值:字符串列表

示例:

>>> 'a3bc-abc-ab ef\thh\nmn'.split()
['a3bc-abc-ab', 'ef', 'hh', 'mn'] 
>>> 'a3bc-abc-ab ef\thh\nmn'.split(maxsplit=2)
['a3bc-abc-ab', 'ef', 'hh\nmn']
>>> 'a3bc-abc-ab ef\thh\nmn'.split('a')
['', '3bc-', 'bc-', 'b ef\thh\nmn']
>>> 'a3bc-abc-ab ef\thh\nmn'.split('bc')
['a3', '-a', '-ab ef\thh\nmn']

33.rsplit方法

做用:從右到左,以字符串sep 來分割字符串S,最多分割maxsplit
原型:S.rsplit(sep=None, maxsplit=-1) -> list of strings
參數:同strip 方法
返回值:字符串列表

示例:

>>> 'a3bc-abc-ab ef\thh\nmn'.rsplit()
['a3bc-abc-ab', 'ef', 'hh', 'mn']
>>> 'a3bc-abc-ab ef\thh\nmn'.rsplit(maxsplit=2)
['a3bc-abc-ab ef', 'hh', 'mn']
>>> 'a3bc-abc-ab ef\thh\nmn'.rsplit('bc')
['a3', '-a', '-ab ef\thh\nmn']

34.splitlines方法

做用:對字符串S 進行行分割,換行符爲\r\n\r\n
原型:S.splitlines([keepends]) -> list of strings
參數keependsTrueFalse,爲True 時保留換行符,爲False 時不保留換行符,默認爲False
返回值:字符串列表

示例:

>>> 'a3bc-abc-ab ef\thh\nmn'.splitlines()
['a3bc-abc-ab ef\thh', 'mn'] 
>>> 'a3bc-abc-ab ef\thh\nmn'.splitlines(True)
['a3bc-abc-ab ef\thh\n', 'mn']

8,其它方法

35.encode方法

做用:對Sencoding指定的編碼格式進行編碼
原型:S.encode(encoding='utf-8', errors='strict') -> bytes
參數 encoding:以什麼編碼格式進行編碼,默認是utf-8
參數 errors:發生錯誤時的處理方式,默認爲strict,其它可選值有ignorereplacexmlcharrefreplace
返回值S 的字節形式值

示例:

>>> s = '中國'
>>> s.encode('utf8')
b'\xe4\xb8\xad\xe5\x9b\xbd'

36.join方法

做用:用於鏈接迭代器iterable 中的全部元素,分隔符爲S
原型:S.join(iterable) -> str
參數:可迭代類型數據
返回值:新的字符串

示例:

>>> ','.join('abc')
'a,b,c' 
>>> '|'.join('abc')
'a|b|c'

關於可迭代類型,將在後續章節詳細介紹,這裏只須要知道字符串就是一種可迭代類型

37.startswith方法

做用:判斷字符串S[start:end] 是否以子串prefix 開頭
原型:S.startswith(prefix[, start[, end]]) -> bool
參數 prefix:子字符串
參數 start:開始位置,可省,默認爲 0
參數 end:結束位置,可省,默認爲 len(S)
返回值TrueFalse

示例:

>>> 'abcabcabc'.startswith('abc')
True
>>> 'abcabcabc'.startswith('bc')
False

38.endswith方法

做用:判斷字符串S[start:end] 是否以子串suffix 結尾
原型:S.endswith(suffix[, start[, end]]) -> bool
參數 suffix:子字符串
參數 start:開始位置,可省,默認爲 0
參數 end:結束位置,可省,默認爲 len(S)
返回值TrueFalse

示例:

>>> 'abcabcabc'.endswith('bc')
True
>>> 'abcabcabc'.endswith('bcd')
False

39.replace方法

做用:從左到右,將S 中的 old 轉換成 new,最多轉換 count
原型:S.replace(old, new[, count]) -> str
參數 old:源字符串,能夠是任意長度
參數 new:目標字符串,能夠是任意長度
參數 count:最多轉換 count
返回值:新的字符串

示例:

>>> 'abcabcabc'.replace('a', '1')
'1bc1bc1bc'
>>> 'abcabcabc'.replace('a', '111')
'111bc111bc111bc'
>>> 'abcabcabc'.replace('ab', '1')
'1c1c1c'
>>> 'abcabcabc'.replace('a', '1', 2)
'1bc1bcabc'

40.expandtabs方法

做用:將S 中的tab 轉爲空格,tab\t
原型:S.expandtabs(tabsize=8) -> str
參數 tabsize:一個tab 轉爲空格的個數與tab 以前的子串長度之和爲tabsize,默認爲 8
返回值:新的字符串

示例:

>>> 'a\tbca\tbca\tbc'.expandtabs(4)
'a   bca bca bc'
>>> 'a\tbca\tbca\tbc'.expandtabs(4).replace(' ', '-')
'a---bca-bca-bc'	         # 爲了方便顯示空格的個數,將空格替換爲橫線
>>> 'a\tbca\tbca\tbc'.expandtabs(8)
'a       bca     bca     bc'
>>> 'a\tbca\tbca\tbc'.expandtabs(8).replace(' ', '-')
'a-------bca-----bca-----bc' # 爲了方便顯示空格的個數,將空格替換爲橫線

經過下圖能夠更好的理解expandtabs()的含義:

在這裏插入圖片描述

41.maketrans方法

做用:用於建立一個字符映射,常與 translate 方法配合使用
原型:maketrans(x, y=None, z=None, /)
參數:當只有1 個參數時,必須是一個字典。當有2 個參數時,是兩個字符串,且這兩個字符串的長度必須相同
返回值:一個字典類型的數據

示例:

>>> str.maketrans({'a':'1', 'b':'2', 'c':'3', 'd':'好'})
{97: '1', 98: '2', 99: '3', 100: '好'}
>>> str.maketrans('abcd', '123好')
{97: 49, 98: 50, 99: 51, 100: 22909}

42.translate方法

做用:將字符串S 使用table 進行替換
原型:S.translate(table) -> str
參數:是一個字典類型
返回值:新的字符串

示例:

>>> x = str.maketrans('abc', '123')
>>> x
{97: '1', 98: '2', 99: '3', 100: '好'}
>>> 'axxxbxxxcxxx'.translate(x) # a->1 b->2 c->3
'1xxx2xxx3xxx'

43.partition方法

做用:從左邊開始,將字符串Ssep 進行分隔,只會進行一次分隔
原型:S.partition(sep) -> (head, sep, tail)
參數sep 能夠是任意長度的字符串
返回值:返回一個三元組(head, sep, tail),head 是分隔後的前半部分,tail 是後半部分,sep 是分隔符

示例:

>>> 'abcabcabc'.partition('c')
('ab', 'c', 'abcabc')
>>> 'abcabcabc'.partition('bc')
('a', 'bc', 'abcabc')
>>> 'abcabcabc'.partition('abc')
('', 'abc', 'abcabc')

44.rpartition方法

做用:從右邊開始,將字符串Ssep 進行分隔,只會進行一次分隔
原型:S.rpartition(sep) -> (head, sep, tail)
參數:同 partition 方法
返回值:同 partition 方法

示例:

>>> 'abcabcabc'.rpartition('c')
('abcabcab', 'c', '')
>>> 'abcabcabc'.rpartition('bc')
('abcabca', 'bc', '')
>>> 'abcabcabc'.rpartition('abc')
('abcabc', 'abc', '')

(完。)


推薦閱讀:

Python 簡明教程 --- 3,Python 基礎概念

Python 簡明教程 --- 4,Python 變量與基本數據類型

Python 簡明教程 --- 5,Python 表達式與運算符

Python 簡明教程 --- 6,Python 控制流

[Python 簡明教程 --- 7,Python 字符串]http://www.javashuo.com/article/p-adulmskm-me.html)


歡迎關注做者公衆號,獲取更多技術乾貨。

碼農充電站pro

相關文章
相關標籤/搜索