欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python3.2中的字符串函數(shù)學習總結(jié)

 更新時間:2015年04月23日 09:00:29   投稿:junjie  
這篇文章主要介紹了Python3.2中的字符串函數(shù)學習總結(jié),本文講解了格式化類方法、查找 & 替換類方法、拆分 & 組合類方法等內(nèi)容,需要的朋友可以參考下

Sequence Types

sequence類型有六種:strings, byte sequences (bytes objects), byte arrays(bytearray objects), list, tuple, range objects.

sequence類型都支持的通用操作:
成員檢查:in、not in
連接:+
復制:*
下標取值:s[i]
切片:s[i : j]
長度檢查:len(s)
最小值:min(s)
最大值:max(s)
索引取值:s.index(i)
字符串統(tǒng)計:s.count(i)

String Methods

判斷類方法,通常返回一個布爾值:

str.endswith(suffix[, start[, end]]):

判斷字符串是否以指定后綴結(jié)尾,返回True或False。start和end指定判斷的起始范圍,默認全字符串。如:

復制代碼 代碼如下:

'abcde'.endswith('de')   -->True
'abcde'.endswith('de', 0, 3)   -->Flase


str.startwith(prefix[, start[, end]]):

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

str.islower():

判斷字符串中的字母字符是否全部為小寫,該方法僅判斷字符串中的字母字符,不理會其它字符。字符串必須至少包含一個字母字符,否則返回False。如:

復制代碼 代碼如下:

‘中國'.islower()   -->False
‘a(chǎn)b中國'.islower()   -->True

str.isupper():

與st.islower()方法相反,判斷所有字母字符是否全部大寫。

str.istitle():

判斷字符串每個單詞的首字母是否大寫。字符串必須至少包含一個字母字符,否則返回False。即使首字母字符前面有非字母字符,如中文、數(shù)字、下劃線等,也不影響對首字母字符的判斷。

復制代碼 代碼如下:

‘中國'.istitle()   -->False    //字符串不包含字母,返回False
‘中國Abc'.istitle()   -->True    //雖然首字母字符A前面有非字母字符,仍然返回True
‘-Abc xyz'.istitle()   -->False    //后一個單詞的首字母不是大寫,返回False

str.isalnum():

判斷字符串是否只包含由文字數(shù)字式字符,字符串僅包含中文字符合法。若字符串包含空格、下劃線、~等非文字數(shù)字式字符,均返回False。如:

復制代碼 代碼如下:

‘3'.isalnum()   -->True
‘中國'.isalnum()   -->True
‘-'.isalnum()   -->False

注:alphanumberic是一個特殊詞匯,它表明這個字符串由數(shù)字字符或文字字符組成。如,'3'包括了一個數(shù)字字符,'a'包含了一個文字字符,而'3a'同時包括數(shù)字字符和字母字符。

str.isalpha():
判斷字符串是否只包含文字字符,字符串僅包含中文字符合法。如:

復制代碼 代碼如下:

‘中國'.isalpha()   -->True
‘3'.isalpha()   -->False

str.isidentifier():

判斷字符串是否是合法的標識符,字符串僅包含中文字符合法,實際上這里判斷的是變量名是否合法。如:

復制代碼 代碼如下:

‘_a'.isidentifier()   -->True
‘3a'.isidentifier()   -->False
‘中國'.isidentifier()   -->True

str.isprintable():

判斷字符串所包含的字符是否全部可打印。字符串包含不可打印字符,如轉(zhuǎn)義字符,將返回False。

str.isspace():

判斷字符串是否僅包含空格或制表符。注意:空格字符與空白是不同的,如:

復制代碼 代碼如下:

''.isspace()   -->False
' '.isspace()   -->True

str.isdecimal():

判斷字符串是否只包含十進制數(shù)字字符,包括多國語言的十進制數(shù)字字符表現(xiàn)形式。如:

復制代碼 代碼如下:
‘3'.isdecimal()   -->True
‘\u0660'.isdeciaml()   -->True

其它語言的十進制數(shù)字形式參考:http://www.fileformat.info/info/unicode/category/Nd/list.htm

str.isdigit():

判斷字符串是否只包含數(shù)字,這里的數(shù)字包括十進制數(shù)字和其它特殊數(shù)字(如上標數(shù)字等)。一般地,一個數(shù)字是擁有如下屬性值的字符:Numeric_Type=Digit或Numeric_Type=Decimal。

str.isnumeric():

判斷字符串是否只包含數(shù)字字符。數(shù)字字符范圍很大,一般來說,數(shù)字字符是擁有如下屬性值的字符:Numeric_Type=Digit, Numeric_Type=Decimal或Numeric_Type=Numeric。
比較isdecimal()、isdigit()、isnumeric(),幾個方法檢測的范圍依次擴大。


格式化類方法,返回一個格式化的新字符串:

str.encode(encoding=”utf-8”, errors=”strict”):

將字符串以utf-8格式進行編碼。

str.lower():

把全部字母字符轉(zhuǎn)換成小寫,不去管其它非字母字符。字符串全部為非字母字符也是合法的,但返回原字符串。如:

復制代碼 代碼如下:

'中國123ABC'.lower()   --> '中國123abc'
‘中國123'.lower()    -->'中國123'    //不會報錯,返回原字符串

str.upper():

與str.lower()相反,把全部字母字符轉(zhuǎn)換成大寫。如:

復制代碼 代碼如下:

'中國123abc'.upper()   --> '中國123ABC'
'中國123'.upper()   -->'中國123'

str.swapcase():

把字符串中的大小寫字母互換,大寫轉(zhuǎn)換成小寫,小寫轉(zhuǎn)換成大寫。不去管非字母類字符。如:

復制代碼 代碼如下:

'中國123Ab'.swapcase()   -->'中國123aB'
'中國123'.swapcase()   -->'中國123'    //不會報錯,返回原字符串

str.capitalize():

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

復制代碼 代碼如下:

'ab  cd'.capitalize()   -->'Ab  cd'    //只轉(zhuǎn)換字符串的首字母
'中國ab 123cd'.capitalize()   -->'中國ab 123cd'    //首字符為非字母字符,返回原字符串
'中國 123'.capitalize()   -->'中國 123'    //不會報錯,返回原字符串

str.title():

字符串中每個單詞的首字母大寫,其余小寫。單詞的首字符為非字母字符也不影響轉(zhuǎn)換。字符串僅包含非字母字符合法,但返回原字符串。如:

復制代碼 代碼如下:

'ab  cd'.title()   -->'Ab  Cd'    //字符串中每個單詞的首字母大寫
'中國ab 123cd'.title()   -->'中國Ab 123Cd'    //即使首字符為非字母字符,也可以進行轉(zhuǎn)換
'中國 123'.title()   -->'中國 123'

str.center(width[,fillchar]):

返回一個原字符串居中,長度為width的新字符串,width要大于len(str),否則返回原字符串,原字符串開頭和結(jié)尾處使用fillchar進行填充,默認為空格。
注:width為偶數(shù)時,fillchar將平均地填充到原字符串的開頭和結(jié)尾;為奇數(shù)時,fillchar優(yōu)先填充前面。如:

復制代碼 代碼如下:

'abcd'.center(3)   -->'abcd'
'abcd'.center(8) -->'  abcd  '
'abcd'.center(8, *)   -->'**abcd**'
'abcd'.center(7, *)   -->'**abcd*'

str.ljust(width[, fillchar]):

返回一個長度為width,左對齊的字符串,最右邊填充fillchar,默認為空格。width要大于len(str),否則返回原字符串。如:

復制代碼 代碼如下:

‘a(chǎn)bcd'.ljust(10)   -->'abcd      ‘

str.rjust(width[, fillchar]):

與str.ljust()類似,但是它返回一個右對齊的字符串,最左邊填充fillchar。

str.lstrip([chars]):

返回一個去除前了導字符的新字符串,chars參數(shù)是一個字符串,它包含了所有將要被移除的字符集合。默認為空格。
注:關(guān)于lstrip函數(shù)(包括rstrip和strip),網(wǎng)上有很多文章,但都講的不清不楚。它實際的意思是,從原字符串的最左邊開始,匹配chars里包含的所有字符,直至遇到第一個非chars字符為止,原字符串中匹配到的所有字符都被移除。

復制代碼 代碼如下:

‘www.example.com'.lstrip(‘cmowz.')   -->example.com

從字符串的最左邊開始匹配,直至遇到了非chars字符e為止,一共匹配了3個w字符和一個.字符,遇到e匹配結(jié)束。
復制代碼 代碼如下:

'xyxxyy testyx yx yyx'.lstrip('xy ')   -->'testyx yx yyx'

從字符串的最左邊開始匹配,直至遇到非chars字符t為止,一共匹配了三個x三個y,和一個空格,遇到t匹配結(jié)束。

str.rstrip([chars]):
與str.lstrip()相反,從最右邊開始匹配。

復制代碼 代碼如下:

'xyxxyy testyx yx yyx'.rstrip('xy ')   -->'xyxxyy test'

str.strip([chars]):
從字符串的兩頭開始匹配。

復制代碼 代碼如下:

'xyxxyy testyx yx yyx'.strip('xy ')   -->test

str.expandtabs([tabsize]):
把字符串中的所有制表符替換成零個或多個空格,每個制表符替換成多少個空格,由制表符在字符串中的位置和tabsize共同決定。tabsize指定每個制表符替換成的空格數(shù),默認為8個。如:

復制代碼 代碼如下:

'\t\t this\tis test.'.expandtabs(8)   -->'                 this    is test.'

上述示例中,前兩個\t,每個都替換成了8個空格,而第三個\t貌似只替換成了4個。實際上不然,因為制表符的制表位是從每行開頭算起的,所以第三個制表符的制表位是從行首開始的第24個位置,剛好在is的i前面,而不是從this后面開始算的第8個位置。這就是所謂的共同決定。

str.zfill(width):
返回一個長度為width的數(shù)字字符串,最左邊填充0。如果width小于等于原字符串長度,則返回原字符串。主要用于數(shù)字類字符串的格式化。如:

復制代碼 代碼如下:

'abc'.zfill(5)   --> '00abc'    //一般不會做這種格式化,沒什么意義
'123'.zfill(5)   --> '00123'

查找 & 替換類方法:

str.count(sub[, start[, end]]):

統(tǒng)計某個字符中子字符串sub的個數(shù)。start和end指定統(tǒng)計范圍,未指定則默認全字符串范圍內(nèi)統(tǒng)計。如:

復制代碼 代碼如下:

'abcdabac'.count('ab')   -->2
'abcdabac'.count('ab', 2,)   -->1

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

復制代碼 代碼如下:

'0123234'.find('23')   -->2
'0123234'.find('23', 1)   -->2

注:1、find查找的是子字符串在全字符串中出現(xiàn)的第一個位置,匹配到字符串就結(jié)束查找,不管后面還有沒有匹配的字符串。
2、find查找的是子字符串在全字符串出現(xiàn)的第一個位置,而不是指定切片中的第一個位置。
3、如果僅想判斷子字符串是否在某一字符串中,用in判斷符即可,無需find。

str.rfind(sub[, start[, end]]):
跟find方法一樣,返回指定子串的index位置,只不過rfind從字符串的最右邊開始查找,找不到時返回-1。注意:從最右邊開始查找,但index位置卻是從原字符串的最左邊開始算的。如:

復制代碼 代碼如下:

'ABCDEEF'.find('E')   -->4   //從最左邊開始查找,從A到第一個D后面的E結(jié)束,返回索引值4
'ABCDEEF'.rfind('E')   -->5   //從最右邊開始查找,從A到第一個F前面的E結(jié)束,返回索引值5

str.format(*args, **kwargs):
調(diào)用fortmat方法的字符串中不但有純文本,也有使用{}界定符包括起來的替換字段。替換字段既可以是位置參數(shù)的數(shù)值索引,也可以是字典或?qū)傩缘腒ey值。該方法返回的字符串里,所有替換字段都被相應參數(shù)的值所替代。如:

復制代碼 代碼如下:

‘User ID: {0}'.format(‘root')   -->User ID: root
‘User ID: {UID}  Last login: {last_login}'.format(UID = ‘root', last_login = ‘5 Mar 2012')   -->User ID: root   Last login: 5 Mar 2012

str.index(sub[, start[, end]]):

類似str.find(),但是如果沒有找到子串,返回raised ValueError。

str.rindex(sub[, start[, end]]):

類似于str.rfind(),但是如果沒有找到,返回raises ValueError。

str.replace(old, new[, count]):
返回一個新字符串,原串中的old被替換為new,country指定替換次數(shù)。如:

復制代碼 代碼如下:

'AAABBBCCC'.replace('A', 'D')   -->DDDBBBCCC
'AAABBBCCC'.replace('A', 'D', 2)   -->DDABBBCCC

static str.maketrans(x[, [y, z]]):
這個方法我不是很明白,特別是它還有一個static修飾符。
大致上,它的用途是返回一個轉(zhuǎn)換表,以供str.translate()方法使用,兩個方法常配合使用。
如:

復制代碼 代碼如下:

table = str.maketrans('cs', 'kz')
"please don't knock at my door!".translate(table)   -->"pleaze don't knokk at my door!"   //'c'被替換成了k,'s'被替換成了z。說明參數(shù)可以包含多個字符,但第一個參數(shù)包含的字符數(shù)和第二個參數(shù)包含的字符數(shù)必須相等。

table = str.maketrans('cs', 'kz', 'o')
"please don't knock at my door!".translate(table)   -->"pleaze dn't knkk at my dr!"   //如果有三個參數(shù),則第三個參數(shù)的意思是刪除原字符串中的相應字符。

str.translate(map):

和str.maketrans()函數(shù)配合使用,替換相應的字符。


拆分 & 組合類方法:

str.partition(sep):

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

復制代碼 代碼如下:

'abcdee'.partition('f')   --> ('abcdee', '', '')
'abcdee'.partition('e')   --> ('abcd', 'e', 'e')

str.rpartition(sep):

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

復制代碼 代碼如下:

'abcdee'.rpartition('e')   --> ('abcde', 'e', '')    //拆分的三個元素分別是:倒數(shù)第一個e之前的元素,e本身,e之后的元素,此外為空格
'abcdee'.rpartition('f')   --> ('', '', 'abcdee')    //拆分的三個元素分別是:空格,空格,原字符串

str.split([sep[, maxsplit]]):

返回一個以Sep分隔的列表,maxsplit指定拆分次數(shù)(因此,列表中元素的個數(shù)為maxsplit + 1)。Sep默認為空格,maxsplit默認不限制拆分次數(shù)。
注意:1)如果未指定Sep或指定Sep為None(''),str兩端的空格將舍棄;如果指定Sep(不管能否在原字符串中找到Sep),str兩端的空格將保留
2)如果未能在原字符串中找到Sep,則返回一個僅包含一個元素的列表,這個元素就是原字符串。
如:

復制代碼 代碼如下:

'  abcbdbee  '.split()   --> ['abcbdbee']    //未指定Sep,返回僅包含一個元素的列表,舍棄str兩端的空格
'  abcbdbee '.split('f')   --> ['  abcbdbee ']    //指定f為Sep(雖然找不到f),返回僅包含一個元素的列表,保留兩端的空格
'  abcbdbee '.split('b')   --> ['  a', 'c', 'd', 'ee ']   //指定b為Sep,不限定拆分次數(shù),str兩端的空格被保留
'  abcbdbee  '.split('b', 2)   --> ['  a', 'c', 'dbee  ']    //以b為分隔符,拆分兩次

注:有點像str.partition(),但是str.partition()返回一個元組,而且分隔符Sep是元組中的一個元素;而str.split(0返回一個列表,分隔符Sep不在列表中

str.rsplit([sep[, maxsplit]]):

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

復制代碼 代碼如下:

'abcbdbee'.rsplit('b')   --> ['a', 'c', 'd', 'ee']     //不指定maxsplit,返回的結(jié)果與str.split()相同
'abcbdbee'.rsplit('b', 2)   --> ['abc', 'd', 'ee']    //可以看出與str.split(‘b', 2)的差別

str.join(iterable):

使用連接符str來連接iterable對象中的元素,返回一個被str連接起來的,由iterable對象的元素組成的字符串。如果傳入一個非iterable對象,如整數(shù)、布爾值等,將返回Type Error。 如:

復制代碼 代碼如下:

‘A B'. join(['1', '2', '中國'])   -->1A B2A B中國
‘A B'.join(‘12中國')   -->1A B2A B中國
‘A B'.join(123)   -->Type Error

注:iterable object或iterator type最主要的特征是支持兩個函數(shù):__iter__()和__next__(),雖然不是很準確,但可以簡單的認為支持使用for語句逐個取值的數(shù)據(jù)類型都是迭代器對象。
sequence type(六種:strings、byte objects、byte arrays、lists、tuples、range objects)和dictionary都屬于iterable對象。

str.splitlines([keepends]):

拆分一個包含多行的字符串,以每行為一個元素返回一個列表。如果字符串不是多行的,則返回原字符串。keepends是一個True字符或非零整數(shù),表示保留行尾標志。該方法多用于處理文件。如:

復制代碼 代碼如下:

Line = ‘AB
CD
EF'''
Line.splitlines()   -->['AB', 'CD', 'EF']

Line = 'AB\nCD\nEF'
Line.splitlines()   -->['AB', 'CD', 'EF']

Line = 'AB\nCD\nEF'
Line.splitlines(True)   --> ['AB\n', 'CD\n', 'EF']

相關(guān)文章

  • 如何通過python實現(xiàn)全排列

    如何通過python實現(xiàn)全排列

    這篇文章主要介紹了如何通過python實現(xiàn)全排列,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • 關(guān)于Python函數(shù)的定義和參數(shù)

    關(guān)于Python函數(shù)的定義和參數(shù)

    這篇文章主要介紹了關(guān)于Python函數(shù)的定義和參數(shù),Python中的函數(shù)我們可以理解成是一種具有功能的包裝塊,也就是封裝具有某一種功能的代碼塊,需要的朋友可以參考下
    2023-04-04
  • python中創(chuàng)建一個包并引用使用的操作方法

    python中創(chuàng)建一個包并引用使用的操作方法

    python包在開發(fā)中十分常見,一般通過導入包含特定功能的python模塊包進行使用。當然,也可以自己創(chuàng)建打包模塊,然后發(fā)布,安裝使用,這篇文章主要介紹了python中如何創(chuàng)建一個包并引用使用,需要的朋友可以參考下
    2022-08-08
  • Python雙精度浮點數(shù)運算并分行顯示操作示例

    Python雙精度浮點數(shù)運算并分行顯示操作示例

    這篇文章主要介紹了Python雙精度浮點數(shù)運算并分行顯示操作,涉及Python數(shù)學運算及顯示相關(guān)操作技巧,注釋備有詳盡的說明,需要的朋友可以參考下
    2017-07-07
  • 基于pytorch中的Sequential用法說明

    基于pytorch中的Sequential用法說明

    這篇文章主要介紹了基于pytorch中的Sequential用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python程序?qū)崿F(xiàn)向MySQL存放圖片

    Python程序?qū)崿F(xiàn)向MySQL存放圖片

    這篇文章主要介紹了Python程序?qū)崿F(xiàn)向MySQL存放圖片,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • 使用Cython中prange函數(shù)實現(xiàn)for循環(huán)的并行

    使用Cython中prange函數(shù)實現(xiàn)for循環(huán)的并行

    Cython中提供了一個prange函數(shù),專門用于循環(huán)的并行執(zhí)行。這個 prange的特殊功能是Cython獨一無二的,并且prange只能與for循環(huán)搭配使用,不能獨立存在。本文就將使用 prange 實現(xiàn) for 循環(huán)的并行,感興趣的可以了解一下
    2022-08-08
  • python+selenium實現(xiàn)自動化百度搜索關(guān)鍵詞

    python+selenium實現(xiàn)自動化百度搜索關(guān)鍵詞

    在本篇文章里我們給大家分享了一篇關(guān)于python+selenium實現(xiàn)自動化百度搜索關(guān)鍵詞的實例文章,需要的朋友們可以跟著操作下。
    2019-06-06
  • 關(guān)于jieba.cut與jieba.lcut的區(qū)別及說明

    關(guān)于jieba.cut與jieba.lcut的區(qū)別及說明

    這篇文章主要介紹了關(guān)于jieba.cut與jieba.lcut的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Python升級導致yum、pip報錯的解決方法

    Python升級導致yum、pip報錯的解決方法

    這篇文章主要給大家介紹了因為Python升級導致yum、pip報錯的解決方法,文中通過示例代碼將解決的方法介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習下吧。
    2017-09-09

最新評論