搜索
首页后端开发Python教程Python3.2中的字符串函数学习总结

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
Python vs. C:了解关键差异Python vs. C:了解关键差异Apr 21, 2025 am 12:18 AM

Python和C 各有优势,选择应基于项目需求。1)Python适合快速开发和数据处理,因其简洁语法和动态类型。2)C 适用于高性能和系统编程,因其静态类型和手动内存管理。

Python vs.C:您的项目选择哪种语言?Python vs.C:您的项目选择哪种语言?Apr 21, 2025 am 12:17 AM

选择Python还是C 取决于项目需求:1)如果需要快速开发、数据处理和原型设计,选择Python;2)如果需要高性能、低延迟和接近硬件的控制,选择C 。

达到python目标:每天2小时的力量达到python目标:每天2小时的力量Apr 20, 2025 am 12:21 AM

通过每天投入2小时的Python学习,可以有效提升编程技能。1.学习新知识:阅读文档或观看教程。2.实践:编写代码和完成练习。3.复习:巩固所学内容。4.项目实践:应用所学于实际项目中。这样的结构化学习计划能帮助你系统掌握Python并实现职业目标。

最大化2小时:有效的Python学习策略最大化2小时:有效的Python学习策略Apr 20, 2025 am 12:20 AM

在两小时内高效学习Python的方法包括:1.回顾基础知识,确保熟悉Python的安装和基本语法;2.理解Python的核心概念,如变量、列表、函数等;3.通过使用示例掌握基本和高级用法;4.学习常见错误与调试技巧;5.应用性能优化与最佳实践,如使用列表推导式和遵循PEP8风格指南。

在Python和C之间进行选择:适合您的语言在Python和C之间进行选择:适合您的语言Apr 20, 2025 am 12:20 AM

Python适合初学者和数据科学,C 适用于系统编程和游戏开发。1.Python简洁易用,适用于数据科学和Web开发。2.C 提供高性能和控制力,适用于游戏开发和系统编程。选择应基于项目需求和个人兴趣。

Python与C:编程语言的比较分析Python与C:编程语言的比较分析Apr 20, 2025 am 12:14 AM

Python更适合数据科学和快速开发,C 更适合高性能和系统编程。1.Python语法简洁,易于学习,适用于数据处理和科学计算。2.C 语法复杂,但性能优越,常用于游戏开发和系统编程。

每天2小时:Python学习的潜力每天2小时:Python学习的潜力Apr 20, 2025 am 12:14 AM

每天投入两小时学习Python是可行的。1.学习新知识:用一小时学习新概念,如列表和字典。2.实践和练习:用一小时进行编程练习,如编写小程序。通过合理规划和坚持不懈,你可以在短时间内掌握Python的核心概念。

Python与C:学习曲线和易用性Python与C:学习曲线和易用性Apr 19, 2025 am 12:20 AM

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

See all articles

热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

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。