Python中常用字符串處理


 

  • 字符串可以使用單引號或雙引號來定義。在Python3 中,所有的字符串都是使用Unicode編碼的字符序列。
>>> s = '你好, Hello'
>>> len(s)
8
>>> s[0]
''
  • Python3支持把值格式化(format)成字符串,可以有非常復雜的表達式,最基本的用法是使用單個占位符(placeholder)將一個值插入字符串。
>>> username = 'mark'
>>> password = 'PayayaWhip'
>>> "{0}'s password is {1}".format(username, password)
"mark's password is PayayaWhip"
>>> si_suffixes = ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
>>> '1000{0[0]} = 1{0[1]}'.format(si_suffixes)
'1000KB = 1MB'
  • split(sep, maxsplit):第一個參數為指定的分隔符sep ,根據這個分隔符將字符串分離成一個字符串列表。maxsplit指定拆分次數,默認不限制拆分次數。

    rsplit(sep, maxsplit):與split() 類似,只是它從最右邊開始拆分。只有在指定maxsplit 的情況下才會看到效果。

>>> str = 'H-E-L-L-O'
>>> str.split('-')
['H', 'E', 'L', 'L', 'O']
>>> str.split('-',1)
['H', 'E-L-L-O']
>>> str.rsplit('L')
['H-E-', '-', '-O'] 

    在Python的shell里可以使用三個引號輸入多行字符串。splitlines() 方法以多行字符串作為輸入,返回一個由字符串組成的列表,列表的元素即原來的單行字符串,每行行末的回車符沒有被包括進去。

>>> str = '''Hello,
World!'''
>>> str
'Hello,\nWorld!'
>>> str.splitlines()
['Hello,', 'World!'] 
  • lower()、 upper() 方法分別把整個字符串轉換成小寫、大寫。

    swapcase() :把字符串中的大小寫互換,大寫轉換成小寫,小寫轉換成大寫。

    capitalize() :字符串首字母大寫,其余小寫。如果字符串首字符為非字母字符,將返回原字符串。字符串僅包含非字母字符合法,但返回原字符串。

    title() :字符串中每個單詞的首字母大寫,其余小寫。

  • count(sub, start, end):對字符串中指定的子串進行計數。start和end指定統計范圍。
  • endswith(suffix, start, end) :判斷字符串是否以指定后綴結尾,返回 True 或False 。 start和 end 指定判斷的起始范圍,默認全字符串。

    startwith(prefix, start, end) :與 str.endwith()相反,判斷字符串是否以指定前綴開始。

  • istitle():判斷字符串每個單詞的首字母是否大寫。字符串必須至少包含一個字母字符,否則返回False 。

    isalnum() :判斷字符串是否只包含由文字數字式字符,字符串僅包含中文字符合法。若字符串包含空格、下划線、 ~ 等非文字數字式字符,均返回False 。
    isalpha() :判斷字符串是否只包含文字字符,字符串僅包含中文字符合法。
    isidentifier() :判斷字符串是否是合法的標識符,字符串僅包含中文字符合法,實際上這里判斷的是變量名是否合法。
    isprintable() :判斷字符串所包含的字符是否全部可打印。字符串包含不可打印字符,如轉義字符,將返回 False 。
    isspace() :判斷字符串是否僅包含空格或制表符。
    isdecimal() :判斷字符串是否只包含十進制數字字符,包括多國語言的十進制數字字符表現形式。
    isdigit() :判斷字符串是否只包含數字,這里的數字包括十進制數字和其它特殊數字(如上標數字等)。
    isnumeric() :判斷字符串是否只包含數字字符。

  • find(sub, start, end) :查找子字符串在字符串中出現的第一個位置,start和end指定一個查找范圍。未找到返回 -1 。

    rfind(sub, start, end) :跟find方法一樣,返回指定子串的index位置,只不過rfind從字符串的最右邊開始查找,找不到時返回 -1 。

  • partition(sep) :該方法用於拆分字符串,返回一個包含三個元素的元組。如果未能在原字符串中找到sep,則元組的三個元素為:原字符串,空串,空串;否則,從原字符串中遇到的第一個sep字符開始拆分,元組的三個元素為:sep之前的字符串,sep字符,sep之后的字符串;

        rpartition(sep) :與partition()相反,從原字符串的最右邊開始拆分,但是同樣返回包含三個元素的元組:倒數第一個sep之前的字符串,sep字符,sep之后的字符串。注意 “倒數sep之前的字符串”,這個之前的字符串,是從原字符串的最左邊開始算,並不是最右邊。

  • expandtabs(tabsize):把字符串中的所有制表符替換成零個或多個空格,每個制表符替換成多少個空格,由制表符在字符串中的位置和tabsize共同決定。tabsize指定每個制表符替換成的空格數,默認為8個。
  • zfill(width) :返回一個長度為 width的數字字符串,最左邊填充0。如果width小於等於原字符串長度,則返回原字符串。主要用於數字類字符串的格式化。
  • replace(old, new, count]):返回一個新字符串,原串中的old被替換為new,count指定替換次數。

 

  • lstrip(chars) :chars參數是一個字符串,它包含了所有將要被移除的字符集合,默認為空格。從原字符串的最左邊開始,匹配chars里包含的所有字符,直至遇到第一個非chars字符為止,原字符串中匹配到的所有字符都被移除。

    rstrip(chars) :與 lstrip()相反,從最右邊開始匹配。
    strip(chars) :從字符串的兩頭開始匹配。

>>> 'www.example.com'.lstrip('cmowz.')
'example.com'
>>> 'www.example.com'.rstrip('cmowz.')
'www.example'
>>> 'www.example.com'.strip('cmowz.')
'example'
  • ljust(width, fillchar):返回一個長度為width,左對齊的字符串,最右邊填充fillchar,默認為空格。width要大於len(str),否則返回原字符串。
    rjust(width, fillchar) :與 str.ljust()類似,但是它返回一個右對齊的字符串,最左邊填充fillchar 。
    center(width, fillchar) :返回一個原字符串居中,長度為 width 的新字符串, width要大於 len(str) ,否則返回原字符串,原字符串開頭和結尾處使用 fillchar 進行填充,默認為空格。

  • str.join(str2):連接str2(iterable對象)中的元素,返回一個被str連接起來的,由str2(iterable對象)的元素組成的字符串。如果傳入一個非iterable對象,如整數、布爾值等,將返回TypeError。
    注:iterable object或iterator type最主要的特征是支持兩個函數:__iter__()和__next__(),雖然不是很准確,但可以簡單的認為支持使用for語句逐個取值的數據類型都是迭代器對象。sequence type(六種:strings、byte objects、byte arrays、lists、tuples、range objects)和dictionary都屬於iterable對象。

>>> str2=('A','B','C')
>>> '-'.join(str2) 'A-B-C' 
>>> str2=['D','E','F'] 
>>> '-'.join(str2) 'D-E-F' 
>>> '-'.join('Hello') 'H-e-l-l-o' 
>>> '-'.join(123) 
Traceback (most recent call last):
File "<pyshell#83>", line 1, in <module>
'-'.join(123)
TypeError

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM