应届毕业生凭什么企业会给他20K的薪资?他的字符串笔记数十万字

匿名 (未验证) 提交于 2019-12-02 22:11:45

Ŀ¼

  • 字符串操作
  • 字符串运算符
  • 字符串内置函数
  • 字符串索引
  • 字符串切片
  • 在字符串切片过程中指定步幅
  • 向字符串中插入变量
  • 修改字符串
  • 字符串内置方法
  • bytes对象
  • 定义bytes对象字面量
  • 使用内置bytes()函数定义一个bytes对象
  • bytes对象上的操作
  • bytearray对象
  • 结论
  • 进群:125240963    即可获取数十套PDF或者零基础入门资料!

 

 

*运算符

* 运算符创建字符串的多个副本。如果s是一个字符串,n是一个整数,下面任何一种表达式都可以返回一个由n个s的副本所连接而成的字符串:

s * n

n * s

以下是两种形式的示例:

 

乘数操作数n必须是一个整数。你也许会认为它必须是一个正整数,但有趣的是,它可以是0或者负数,在这种情况下结果为空字符串。

 

如果你要创建一个字符串并通过 "foo" * -8 为其赋值将其初始化成为一个空字符串,所有人都会认为你有点蠢。不过这样做确实是有效的。

 

正如您在Python中的基本数据类型教程中所看到的一样,Python提供了许多内置于解释器并始终可用的函数。下面是一些可以作用于字符串的函数:

 

Unicode是一个雄心勃勃的标准,它试图在每个可能的平台上,对各种可能的语言,为每个可能的字符提供数字编码。 Python 3广泛支持Unicode,包括允许字符串中使用Unicode字符。

 

str(obj)

返回一个对象的字符串表示

事实上,Python中的任何对象都可以呈现为字符串。 str(obj)返回对象obj的字符串表示形式:

 

可以通过索引访问各个字符,如下所示:

 

尝试超出字符串末尾的索引会导致错误:

 

字符串索引也可以用负数指定,在这种情况下,索引在字符串中由后向前开始:-1指向最后一个字符,-2指向倒数第二个字符,依此类推。以下是显示字符串中正负索引的相同图表"foobar":

 

正数和负数索引

下面是一些负数索引的例子:

 

尝试使用超出字符串开头的负数进行索引会导致错误:

 

 

对于任何字符串s和任何整数n(0 ≤ n ≤ len(s)),s[:n] + s[n:]将等于s:

 

省略两个索引将完整地返回原始字符串。然而它不是原始字符串的副本,它是对原始字符串的引用:

 

如果切片中的第一个索引大于或等于第二个索引,则Python返回一个空字符串。如果你正在寻找一种另类的生成空字符串的方式,那么这是一种方法:

 

负数索引也可以与切片一起使用。-1表示最后一个字符,-2倒数第二个,依此类推,就像基本的索引一样。下图显示了如何使用正数索引和负数索引从字符串"foobar"中切割子字符串"oob":

 

正负索引在字符串切片中的使用

下面是对应的Python代码:

 

在字符串切片过程中指定步幅

还有一种切片语法的变形可以进行介绍。再添加一个参数:第三个参数指明步幅(也叫做步长),表明在切片中检索字符时每次跳过多少个字符。

例如,对于字符串"foobar",切片0:6:2以第一个字符开头,以最后一个字符(整个字符串)结束,并且每次跳过第二个字符。如下图所示:

 

带有步幅的字符串索引

类似的,1:6:2指定以第二个字符(索引1)开头并以最后一个字符结束的切片,并且步幅值再次为2导致每次都有一个字符被跳过:

 

另一个带有步幅的字符串索引

说明的REPL代码如下:

 

对于任何切片,可以省略第一个和第二个索引,并分别默认为第一个和最后一个字符:

 

您也可以指定负数步幅值,在这种情况下,Python会从后向前逐步处理字符串。在这种情况下,起始/第一个索引应该大于结束/第二个索引:

 

在上面的示例中,5:0:-2表示“从最后一个字符开始,每次后退2步,直到(但不包括)第一个字符”。

当您后退时,如果省略第一个和第二个索引,则以直观的方式反转默认值:第一个索引默认为字符串的结尾,第二个索引默认为开头。下面是一个例子:

 

下面是反转字符串的常见范例:

 

 

 

Python的三种引用机制中的任何一种都可用于定义f-string:

 

修改字符串

简而言之,你做不到。字符串是Python认为不可变的数据类型之一,意味着无法更改。实际上,到目前为止您看到的所有数据类型都是不可变的。(Python确实提供了可变的数据类型,您很快就会看到。)

 

在对象上调用方法的语法如下:

 

这将调用对象obj上的方法.foo()。<args>指定传递给方法的参数(如果有)。

稍后在面向对象编程的讨论中,您将探索有关定义和调用方法的更多信息。目前,我们的目标是介绍Python支持的一些常用的用于对字符串对象进行操作的内置方法。

在以下方法定义中,方括号([])中指定的参数是可选的。

大小写转换

本组方法对目标字符串执行大小写转换。

s.capitalize()

目标字符串首字母大写

s.capitalize()返回一个s的副本,第一个字符转换为大写,所有其他字符转换为小写:

 

非字母字符不变:

 

s.lower()

将字母字符转换为小写

s.lower()返回s中所有字母字符转换为小写的副本:

 

s.swapcase()

转换字母字符大小写

s.swapcase()返回一个s中大写字母字符转换为小写,小写字母转化为大写的副本:

 

s.title()

将目标字符串转化为单词首字母大写

s.title()返回s的一个副本,其中每个单词的第一个字母转换为大写,其余字母为小写:

 

该方法使用相当简单的算法。它并不试图区分重要和不重要的单词,而且它不能优雅地处理撇号,所有格或首字母缩略词:

 

s.upper()

将字母字符转化为大写

s.upper()返回s中所有字母字符转换为大写的副本:

 

查找和替换

这些方法提供了在目标字符串中搜索指定子字符串的各种方式。

该组中的每个方法都支持可选的<start>和<end>参数。这些参数在字符串切片时被解释:方法的操作仅限于目标字符串中从<start>位置字符开始到(不包括)<end>位置字符的部分。如果<start>被指定了但<end>没有,则该方法应用于目标字符串中从<start>开始直到字符串的末尾的部分。

s.count(<sub>[, <start>[, <end>]])

计算目标字符串中子字符串的出现次数

s.count(<sub>)返回字符串s中非重叠子串<sub>出现的次数:

 

计数被限制在由<start>和<end>所指定的子串内,如果参数被设定的话:

 

s.endswith(<suffix>[, <start>[, <end>]])

判断目标字符串是否以给定子字符串结尾

如果s以指定的<suffix>结尾,s.endswith(<suffix>)返回True,否则返回False:

 

判断被限制在由<start>和<end>所指定的子串内,如果参数被设定的话:

s.find(<sub>[, <start>[, <end>]]

在目标字符串中搜索给定的子字符串

s.find(<sub>)返回在s中找到子字符串<sub>的最小索引:

 

如果指定的子串没有找到,该方法返回-1:

 

检索被限制在由<start>和<end>所指定的子串内,如果参数被设定的话:

 

s.index(<sub>[, <start>[, <end>]])

在目标字符串中搜索给定的子字符串

这个方法与.find()功能相同,只是在查找不到<sub>时会产生一个异常而非返回-1:

 

s.rfind(<sub>[, <start>[, <end>]])

从末尾开始搜索目标字符串中的给定子字符串

s.rfind(<sub>)返回在s中找到子字符串<sub>的最大索引:

 

和.find()一样,如果指定的子串没有找到,该方法返回-1:

 

检索被限制在由<start>和<end>所指定的子串内,如果参数被设定的话:

 

s.rindex(<sub>[, <start>[, <end>]])

从末尾开始搜索目标字符串中的给定子字符串

这个方法与.rfind()功能相同,只是在查找不到<sub>时会产生一个异常而非返回-1:

 

s.startswith(<prefix>[, <start>[, <end>]])

判断目标字符串是否以给定子字符串开头

如果s以指定的<suffix>开头,s.startswith(<suffix>)返回True,否则返回False:

 

判断被限制在由<start>和<end>所指定的子串内,如果参数被设定的话:

 

字符分类

此组方法根据字符串包含的字符对字符串进行分类。

s.isalnum()

确定目标字符串是否由字母数字字符组成

如果s是非空的且其所有字符都是字母或数字,s.isalnum()返回True,否则返回False:

 

s.isalpha()

判断目标字符串是否由字母字符组成

如果s是非空的并且其所有字符都是字母,s.isalpha()返回True,否则返回False:

 

s.isdigit()

判断目标字符串是否由数字字符组成

如果s是非空的并且其所有字符都是数字,s.digit()返回True,否则返回False:

 

s.isidentifier()

判断目标字符串是否是有效的Python标识符

如果s根据语言定义是有效的Python标识符,s.isidentifier()返回True,否则返回False:

 

注意:与Python关键字匹配的字符串.isidentifier()将返回True,即使它实际上不是有效的标识符:

 

您可以调用iskeyword()函数测试字符串是否与Python关键字匹配,该函数包含在名为keyword的模块中。一种可能的方法如下所示:

 

如果你真的想确保一个字符串可以作为一个有效的Python标识符,你应该检查.isidentifier()是否为True以及iskeyword()是否为False。

请参阅 Python Modules and Packages―An Introduction阅读有关Python模块的更多信息。

s.islower()

判断目标字符串的字母字符是否为小写

如果s是非空的并且它包含的所有字母字符都是小写的,s.islower()则返回True,否则返回False。忽略非字母字符:

 

s.isprintable()

判断目标字符串是否完全由可打印字符组成

如果s为空或其包含的所有字母字符都是可打印的,s.isprintable()返回True。如果s包含至少一个不可打印的字符,则返回False。忽略非字母字符:

 

 

注意:如果s是空字符串,这是唯一个返回True的.isxxxx()方法。所有其它方法都对空字符串返回False。

未完待续,这人确实很负责。一个字符串的知识点!居然能写出这么全面!你值得这20K的月薪!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!