首頁 後端開發 Python教學 Python3.2中的字符串函数学习总结

Python3.2中的字符串函数学习总结

Jun 06, 2016 am 11:25 AM
python 字串函數

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)
字符串统计:s.count(i)

String Methods

判断类方法,通常返回一个布尔值:

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

判断字符串是否以指定后缀结尾,返回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
‘ab中国'.islower()   -->True

str.isupper():

与st.islower()方法相反,判断所有字母字符是否全部大写。

str.istitle():

判断字符串每个单词的首字母是否大写。字符串必须至少包含一个字母字符,否则返回False。即使首字母字符前面有非字母字符,如中文、数字、下划线等,也不影响对首字母字符的判断。

代码如下:


‘中国'.istitle()   -->False    //字符串不包含字母,返回False
‘中国Abc'.istitle()   -->True    //虽然首字母字符A前面有非字母字符,仍然返回True
‘-Abc xyz'.istitle()   -->False    //后一个单词的首字母不是大写,返回False

str.isalnum():

判断字符串是否只包含由文字数字式字符,字符串仅包含中文字符合法。若字符串包含空格、下划线、~等非文字数字式字符,均返回False。如:

代码如下:


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


注:alphanumberic是一个特殊词汇,它表明这个字符串由数字字符或文字字符组成。如,'3'包括了一个数字字符,'a'包含了一个文字字符,而'3a'同时包括数字字符和字母字符。

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

代码如下:


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


str.isidentifier():

判断字符串是否是合法的标识符,字符串仅包含中文字符合法,实际上这里判断的是变量名是否合法。如:

代码如下:


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


str.isprintable():

判断字符串所包含的字符是否全部可打印。字符串包含不可打印字符,如转义字符,将返回False。

str.isspace():

判断字符串是否仅包含空格或制表符。注意:空格字符与空白是不同的,如:

代码如下:


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

str.isdecimal():

判断字符串是否只包含十进制数字字符,包括多国语言的十进制数字字符表现形式。如:

代码如下:

‘3'.isdecimal()   -->True
‘\u0660'.isdeciaml()   -->True


其它语言的十进制数字形式参考:http://www.fileformat.info/info/unicode/category/Nd/list.htm

str.isdigit():

判断字符串是否只包含数字,这里的数字包括十进制数字和其它特殊数字(如上标数字等)。一般地,一个数字是拥有如下属性值的字符:Numeric_Type=Digit或Numeric_Type=Decimal。

str.isnumeric():

判断字符串是否只包含数字字符。数字字符范围很大,一般来说,数字字符是拥有如下属性值的字符:Numeric_Type=Digit, Numeric_Type=Decimal或Numeric_Type=Numeric。
比较isdecimal()、isdigit()、isnumeric(),几个方法检测的范围依次扩大。


格式化类方法,返回一个格式化的新字符串:

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

将字符串以utf-8格式进行编码。

str.lower():

把全部字母字符转换成小写,不去管其它非字母字符。字符串全部为非字母字符也是合法的,但返回原字符串。如:

代码如下:


'中国123ABC'.lower()   --> '中国123abc'
‘中国123'.lower()    -->'中国123'    //不会报错,返回原字符串

str.upper():

与str.lower()相反,把全部字母字符转换成大写。如:

代码如下:


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

str.swapcase():

把字符串中的大小写字母互换,大写转换成小写,小写转换成大写。不去管非字母类字符。如:

代码如下:


'中国123Ab'.swapcase()   -->'中国123aB'
'中国123'.swapcase()   -->'中国123'    //不会报错,返回原字符串


str.capitalize():

字符串首字母大写,其余小写。如果字符串首字符为非字母字符,将返回原字符串。字符串仅包含非字母字符合法,但返回原字符串。如:

代码如下:


'ab  cd'.capitalize()   -->'Ab  cd'    //只转换字符串的首字母
'中国ab 123cd'.capitalize()   -->'中国ab 123cd'    //首字符为非字母字符,返回原字符串
'中国 123'.capitalize()   -->'中国 123'    //不会报错,返回原字符串

str.title():

字符串中每个单词的首字母大写,其余小写。单词的首字符为非字母字符也不影响转换。字符串仅包含非字母字符合法,但返回原字符串。如:

代码如下:


'ab  cd'.title()   -->'Ab  Cd'    //字符串中每个单词的首字母大写
'中国ab 123cd'.title()   -->'中国Ab 123Cd'    //即使首字符为非字母字符,也可以进行转换
'中国 123'.title()   -->'中国 123'

str.center(width[,fillchar]):

返回一个原字符串居中,长度为width的新字符串,width要大于len(str),否则返回原字符串,原字符串开头和结尾处使用fillchar进行填充,默认为空格。
注:width为偶数时,fillchar将平均地填充到原字符串的开头和结尾;为奇数时,fillchar优先填充前面。如:

代码如下:


'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),否则返回原字符串。如:

代码如下:


‘abcd'.ljust(10)   -->'abcd      ‘

str.rjust(width[, fillchar]):

与str.ljust()类似,但是它返回一个右对齐的字符串,最左边填充fillchar。

str.lstrip([chars]):

返回一个去除前了导字符的新字符串,chars参数是一个字符串,它包含了所有将要被移除的字符集合。默认为空格。
注:关于lstrip函数(包括rstrip和strip),网上有很多文章,但都讲的不清不楚。它实际的意思是,从原字符串的最左边开始,匹配chars里包含的所有字符,直至遇到第一个非chars字符为止,原字符串中匹配到的所有字符都被移除。

代码如下:


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


从字符串的最左边开始匹配,直至遇到了非chars字符e为止,一共匹配了3个w字符和一个.字符,遇到e匹配结束。

代码如下:


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


从字符串的最左边开始匹配,直至遇到非chars字符t为止,一共匹配了三个x三个y,和一个空格,遇到t匹配结束。

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指定每个制表符替换成的空格数,默认为8个。如:

代码如下:


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


上述示例中,前两个\t,每个都替换成了8个空格,而第三个\t貌似只替换成了4个。实际上不然,因为制表符的制表位是从每行开头算起的,所以第三个制表符的制表位是从行首开始的第24个位置,刚好在is的i前面,而不是从this后面开始算的第8个位置。这就是所谓的共同决定。

str.zfill(width):
返回一个长度为width的数字字符串,最左边填充0。如果width小于等于原字符串长度,则返回原字符串。主要用于数字类字符串的格式化。如:

代码如下:


'abc'.zfill(5)   --> '00abc'    //一般不会做这种格式化,没什么意义
'123'.zfill(5)   --> '00123'

查找 & 替换类方法:

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

统计某个字符中子字符串sub的个数。start和end指定统计范围,未指定则默认全字符串范围内统计。如:

代码如下:


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

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

代码如下:


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


注:1、find查找的是子字符串在全字符串中出现的第一个位置,匹配到字符串就结束查找,不管后面还有没有匹配的字符串。
2、find查找的是子字符串在全字符串出现的第一个位置,而不是指定切片中的第一个位置。
3、如果仅想判断子字符串是否在某一字符串中,用in判断符即可,无需find。

str.rfind(sub[, start[, end]]):
跟find方法一样,返回指定子串的index位置,只不过rfind从字符串的最右边开始查找,找不到时返回-1。注意:从最右边开始查找,但index位置却是从原字符串的最左边开始算的。如:

代码如下:


'ABCDEEF'.find('E')   -->4   //从最左边开始查找,从A到第一个D后面的E结束,返回索引值4
'ABCDEEF'.rfind('E')   -->5   //从最右边开始查找,从A到第一个F前面的E结束,返回索引值5

str.format(*args, **kwargs):
调用fortmat方法的字符串中不但有纯文本,也有使用{}界定符包括起来的替换字段。替换字段既可以是位置参数的数值索引,也可以是字典或属性的Key值。该方法返回的字符串里,所有替换字段都被相应参数的值所替代。如:

代码如下:


‘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指定替换次数。如:

代码如下:


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

static str.maketrans(x[, [y, z]]):
这个方法我不是很明白,特别是它还有一个static修饰符。
大致上,它的用途是返回一个转换表,以供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。说明参数可以包含多个字符,但第一个参数包含的字符数和第二个参数包含的字符数必须相等。

table = str.maketrans('cs', 'kz', 'o')
"please don't knock at my door!".translate(table)   -->"pleaze dn't knkk at my dr!"   //如果有三个参数,则第三个参数的意思是删除原字符串中的相应字符。

str.translate(map):

和str.maketrans()函数配合使用,替换相应的字符。


拆分 & 组合类方法:

str.partition(sep):

该方法用于拆分字符串,返回一个包含三个元素的元组。如果未能在原字符串中找到Sep,则元组的三个元素为:原字符串,空串,空串;否则,从原字符串中遇到的第一个Sep字符开始拆分,元组的三个元素为:Sep之前的字符串,Sep字符,Sep之后的字符串;如:

代码如下:


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

str.rpartition(sep):

与str.partition()相反,从原字符串的最右边开始拆分,但是同样返回包含三个元素的元组:倒数第一个Sep之前的字符串,Sep字符,Sep之后的字符串。
注意”倒数Sep之前的字符串”,这个之前的字符串,是从原字符串的最左边开始算,并不是最右边。如:

代码如下:


'abcdee'.rpartition('e')   --> ('abcde', 'e', '')    //拆分的三个元素分别是:倒数第一个e之前的元素,e本身,e之后的元素,此外为空格
'abcdee'.rpartition('f')   --> ('', '', 'abcdee')    //拆分的三个元素分别是:空格,空格,原字符串

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

返回一个以Sep分隔的列表,maxsplit指定拆分次数(因此,列表中元素的个数为maxsplit + 1)。Sep默认为空格,maxsplit默认不限制拆分次数。
注意: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,不限定拆分次数,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,返回的结果与str.split()相同
'abcbdbee'.rsplit('b', 2)   --> ['abc', 'd', 'ee']    //可以看出与str.split(‘b', 2)的差别

str.join(iterable):

使用连接符str来连接iterable对象中的元素,返回一个被str连接起来的,由iterable对象的元素组成的字符串。如果传入一个非iterable对象,如整数、布尔值等,将返回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最主要的特征是支持两个函数:__iter__()和__next__(),虽然不是很准确,但可以简单的认为支持使用for语句逐个取值的数据类型都是迭代器对象。
sequence type(六种:strings、byte objects、byte arrays、lists、tuples、range objects)和dictionary都属于iterable对象。

str.splitlines([keepends]):

拆分一个包含多行的字符串,以每行为一个元素返回一个列表。如果字符串不是多行的,则返回原字符串。keepends是一个True字符或非零整数,表示保留行尾标志。该方法多用于处理文件。如:

代码如下:


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']

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1276
29
C# 教程
1256
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

See all articles