字符串类型
字符串的介绍— “要善良,要勇敢,要像星星一样努力发光”
在 Python 中,字符串是一种 表示文本数据的序列 ,由一系列字符组成。可以使用单引号、双引号或三重引号来创建字符串。其对应的数据类型是 string,在 Python 中可以使用 str 内置函数将其他类型的数据强制转换为字符串。【牧旗教程】
字符串变量的创建主要有以下三种方式:
创建方式 | 描述 |
---|---|
单引号创建 | 最基础的创建字符串的方式,用单引号将文本内容包裹起来。 |
双引号创建 | 和单引号的效果相同,区别是可以在双引号创建的字符串中使用单引号。 |
三引号创建 | 使用三引号创建的字符串可以跨越多行,且保留字符串中的换行符。这对于创建格式化文本,如邮件、模板等非常有用。 |
让我们通过代码来更加深入了解一下:
# 方式一 :使用单引号创建字符串
'牧旗教程'
# 方式二 : 使用双引号创建字符串
"'牧旗教程'创立的初衷是帮助新手小白更好地学习编程。"
# 方式三 : 使用三重引号创建字符串
'''
大家好,
这里是牧旗教程
我将为你们提供详细的编程指导
—— 薛思聪
'''
# 输出结果
print
(string_1)print
(string_2)print
(string_3)运行上面的代码文件,可以看到输出结果如下:
牧旗教程
'牧旗教程'创立的初衷是帮助新手小白更好地学习编程。
大家好,
这里是牧旗教程
我将为你们提供详细的编程指导
—— 薛思聪
从结果中可以看出,使用双引号创建的字符串在文本中可以使用单引号,使用三引号创建的文本,可以在创建时和输出结果时保留了换行、空格等格式。【牧旗教程】
另外,对于其他格式的数据可以使用内置函数 str 强制转换成字符串,来看示例:
type 函数 是 Python 中比较常见的内置函数,可以用来查看任何变量的数据类型。
# 原数据是数字格式
100
print
(type
(value))# 强制转换成字符串格式
str
(value)print
(type
(result))运行上述代码,结果如下:
<class 'int'>
<class 'str'>
可以看出,原来是 int 整数类型的变量,经过 str 函数强制转换为了 string 字符串类型。
字符串的转义符
转义符用于在字符串中插入特殊字符,这些特殊字符具有特定的含义,在字符串中使用这样的标识,将改变原有的字母含义。以下是一些常见的转义符,在后面的教程中我会一一为大家讲解:
换行符 | 名称 | 描述 |
---|---|---|
\n | 换行符 | 使用在字符串中代表换行,输出结果会另起新的一行。 |
\t | 制表符 | 表示在字符串中插入一个制表符,用于缩进,通常用于对齐文本或创建表格。 |
\\ | 反斜杠本身 | 由于 \ + 特殊字母的组合形成了转义符,那么如果我们想在字符串中使用反斜杠本身,就很容易引起冲突,在反斜杠前面再加一个反斜杠,来取消其特殊含义。 |
\' 和 \" | 单引号和双引号 | 为了防止在字符串中使用引号会与最外层包裹的引号产生冲突,可以在需要使用引号的地方前面加一个反斜杠来取消其特殊含义。 |
为了帮助大家理解,我们来看一些示例:
首先在字符串中使用换行符:
# 在字符串中使用换行符
'牧旗教程\n免费\n详细\n专业'
print
(string1)运行代码后结果如下:
牧旗教程
免费
详细
专业
在输出的结果中,会根据 \n 的位置自动进行换行。
这次我们通过在字符串中使用制表符来创建一个简单的表格:
# 在字符串中使用换行符
"姓名\t性别\t年龄"
"小明\t男\t18"
"小红\t女\t16"
"小亮\t男\t20"
print
(title)print
(row1)print
(row2)print
(row3)运行代码后结果如下:
姓名 性别 年龄
小明 男 18
小红 女 16
小亮 男 20
可以看出,制表符可以非常方便地进行对齐,它的作用是可以在字符串中的每个制表符位置处将光标移动到下一个固定的列位置,所以非常适合文本对齐或者创建表格。
再来看反斜杠本身和引号的例子:
# 在反斜杠前加一个反斜杠将其转换为普通单反斜杠,通常在路径中应用较多
print
("Path: C:\\Documents\\Files"
)# 使用反斜杠将双引号转化为普通双引号,使其不具备含义,防止其与外部的双引号冲突
print
("推荐使用\"牧旗教程\"来学习编程知识。"
)# 使用反斜杠将单引号转化为普通单引号,使其不具备含义,防止其与外部的单引号冲突
print
('I\'m from China'
)运行上述代码,结果如下:
Path: C:\Documents\Files
推荐使用"牧旗教程"来学习编程知识。
I'm from China
字符串的访问
字符串的访问可以用来选取字符串内部特定的内容,生成一个新的字符串,下面两种方式是常见的字符串内部选择方法:
名称 | 写法 | 描述 |
---|---|---|
字符串索引 | 字符串[索引] | 索引用于选择字符串中特定位置的字符。 |
字符串切片 | 字符串[起始索引:终止索引:步长] | 切片用于从字符串中获取连续或者跳跃的一系列字符串。 |
在 Python 中,有一个很重要的概念叫做 索引 ,索引是用于访问字符串、列表或元组等序列类型中特定元素的位置标识。
要注意的是,索引是从 0 开始的,也就是说, 0 代表第一个元素,1 代表第二个元素,2 代表第三个元素,以此类推。这一点非常重要,很多初学者会弄混淆。
让我们结合示例来更加深入了解上面提到的两种字符串的访问方法:
-
字符串索引
索引的写法是在字符串后接方括号,并在方括号内写入索引位置。
my_string ="牧旗教程是新手学习编程超好用的学习工具!"
# 选择字符串中第一个元素
string1 = my_string[0
]print
(string1)# 选择字符串中第四个元素
string2 = my_string[3
]print
(string2)# 选择字符串中第八个元素
string3 = my_string[7
]print
(string3)运行上述代码,结果如下:
牧
程
学另外,索引在 Python 中是通用的,很多数据类型都可以通过索引调取其子元素,比如列表、字典、元组等,在后面的教程中会经常接触。【牧旗教程】
-
字符串切片
如果把一段完整的字符串比喻成一车西瓜的话,那么索引就是从中挑选一只西瓜,而切片则是在这一车中选择其中的一批西瓜。【牧旗教程】
切片的写法是在字符串后接方括号,在里面分别填入起始索引、终止索引、步长,中间用冒号隔开。代表从起始索引一直切割到终止索引,步长代表每隔几步选择一个元素。
另外,起始索引、终止索引、步长这三个参数都可以省略,如果步长省略的话默认是 1,也就是不跳步全部选择。【牧旗教程】
需要注意的是: 切片的结果包含左侧的索引但不包含右侧的索引 ,在数学中的概念叫做 “左闭右开” 。来看个例子帮助理解:
my_string ="牧旗教程是新手学习编程超好用的学习工具!"
# 从字符串中选择索引 1 到索引 8 的字符
string1 = my_string[1
:8
]print
(string1)结果如下:
旗教程是新手学
可以看到,原来的字符串 “牧旗教程是新手学习编程超好用的学习工具!” 中,第2个字符 “旗” 到第8个字符 “学” 被选中。
我们的代码是选择索引 1 到索引 8 的字符,索引 1 代表第二个位置的字符 “旗” , 索引 8 代表第九个位置字符 “习” 。
因为切片的特点是 包含左侧的索引但不包含右侧的索引 ,所以第二个字符 “旗” 被选中,而第九个字符 “习” 并没有被选中,选择的是第八个字符 “学”,因此最终结果是选择 “旗” 到 “学” 之间的全部内容。
索引切片对于新手来说很容易混淆,所以要多加练习,争取早日熟练掌握。
有的时候,我们可以省略掉切片中的起始位置或者结束位置,如果省略掉起始位置,那么就是从头开始切,省略结束位置就是一直切到结尾:
my_string ="牧旗教程是新手学习编程超好用的学习工具!"
# 从字符串开头切到索引6,要注意左闭右开
string1 = my_string[:6
]# 从字符串的索引8切到结尾
string2 = my_string[8
:]print
(string1)print
(string2)结果如下:
牧旗教程是新
习编程超好用的学习工具!我们也可以指定步长,来根据需求,每几步选择一个元素:
my_string ="牧旗教程是新手学习编程超好用的学习工具!"
# 从字符串索引为 2 的位置切到索引为 15 的位置,每两个元素选择一次
string1 = my_string[2
:15
:2
]print
(string1)结果如下:
教是手习程好的
如果省略步数参数的话,程序会默认是 1,也就是每一个元素都被选到。
当然,在切片时,起始位置或者终点位置可以使用负数,这代表从倒数的位置开始切片:
my_string ="牧旗教程是新手学习编程超好用的学习工具!"
# 从字符串开头切到索引倒数第三的位置,要注意左闭右开
string1 = my_string[:-3
]# 从字符串的索引-6切到-2
string2 = my_string[-6
:-2
]print
(string1)print
(string2)结果如下:
牧旗教程是新手学习编程超好用的学习
的学习工
字符串的操作
字符串有很多的基本操作,可以用来对其进行处理、拼接、调整等,方式如下:
名称 | 关键词 | 描述 |
---|---|---|
字符串的连接 | + 和 * | 将两个或者多个字符串拼接起来,组成一个新的字符串。 |
字符串包含关系判断 | in | 用来判断两个字符串是否存在包含关系。 |
相关内置函数 | 见下面详细教程 | Python 中有很多专门处理字符串的内置函数。 |
让我们在下面的教程结合示例依次学习相关操作:
-
字符串的连接
在 Python 中,可以直接使用加法符号 + ,将两个或者多个字符串组合起来:
string1 ="牧旗教程"
string2 ="适合新手小白"
string3 ="快速上手"
result = string1 + string2 + string3print
(result)结果如下:
牧旗教程适合新手小白快速上手
在 Python 中,可以直接使用乘法符号 * ,将将字符串重复多次组合起来。【牧旗教程】
string1 ="牧旗"
result = string1 * 3print
(result)结果如下:
牧旗牧旗牧旗
-
字符串的包含关系
使用 in 关键词来判断两个字符串是否存在包含关系,返回的结果是布尔值 ,如果前者包含在后者中,结果是 True(真),反之结果就是 False(假)。
关于布尔类型我们将在后面的教程中深入学习,在这里可以先做初步了解。
string1 ="牧旗教程"
string2 ="学习厨艺"
string3 ="牧旗教程是新手学习编程超好用的学习工具!"
result1 = string1in
string3result2 = string2in
string3print
(result1)print
(result2)结果如下:
True
False -
字符串的相关内置函数
在 Python 中,处理字符串的内置函数有很多,在这里我来介绍一些比较常用的函数:函数名 描述 len 计算字符串内含有几个元素,也就是计算字符串的长度。 replace 替换字符串中的特定文本。 upper 和 lower 分别代表将文本中的字母全部大写和小写。 split 将字符串按照指定文本内容进行分割。 join 将列表里的全部字符串元素,使用某个文本组合在一起。 接下来我将通过一些示例,帮助大家依次学习这些函数:
① len 函数
使用 len 函数计算字符串的长度,要注意,符号也算是字符。
string ="牧旗教程是为了帮助新手学习编程而开发的教程网站。"
longth =len
(string)print
(longth)结果如下,上面这段话一共有 24 个字符:
24
② replace 函数
使用 replace 函数可以替换字符串中特定的文本内容,这个函数需要传入两个参数,第一个参数是被替换的内容,第二个参数是要替换的内容。【牧旗教程】
方法调用 是使用内置函数的一种方式,这种方法的使用规则是将处理对象和函数之间用 . 隔开,待处理对象在前面,函数在后面。将对象本身作为函数的第一个参数传入进去。
我们来看一个例子方便理解:
string1 ="我喜欢使用牧旗教程来提升自己的 Python 编程水平。"
result = string1.replace
("Python"
,"Mysql"
)print
(result)结果如下,原文中的 “Python” 被替换成了 “Mysql” :
我喜欢使用牧旗教程来提升自己的 Mysql 编程水平。
③ upper 和 lower 函数
使用 upper 和 lower 函数可以修改文本内容中的大小写字母,其中 upper 函数将所有字母改成大写,lower 函数将所有字母改成小写。【牧旗教程】
和 replace 函数类似,upper 函数和 lower 函数也都是方法调用函数。
string1 ="hello world"
result1 = string1.upper
()print
(result1)string2 ="Hello My Friend"
result2 = string2.lower
()print
(result2)结果如下:
HELLO WORLD
hello my friend④ split 函数
使用 split 函数将字符串按照指定内容进行分割,最后分割的结果将会以列表的形式呈现。
列表是用于存储各种类型数据的数据结构,外层用方括号包裹,里面的元素用逗号分割开,关于列表的更多知识将在后续的列表教程中详细学习。
关于 split 函数的示例:
string1 ="教程的开发者在计算机行业从业多年,曾在百度和京东担任高级工程师,有着丰富的开发经验。"
result =string1.split
(","
)print
(result)结果如下:
['教程的开发者在计算机行业从业多年', '曾在百度和京东担任高级工程师', '有着丰富的开发经验。']
可以看出,字符串被按照逗号,分割成了三份,结果存放在了一个列表中。
⑤ join 函数
使用 join 函数可以将列表中的字符串元素,使用指定的字符串组合起来,操作和 split 函数正好相反。
注意:join 函数的格式是连接文本在 . 符号前面,要被组合的列表放在后面的括号内。
list1 = ['牧旗教程'
,'专业'
,'详细'
,'免费'
]result ="-"
.join
(list1)print
(result)结果如下,可以看出列表中的四个字符串元素,被用 "-" 字符串组合了起来:
牧旗教程-专业-详细-免费
字符串的进阶内容
以下的内容涉及到一些进阶的知识和内容,对于新手小白来说可以做粗略的了解。
【字符集】
字符是指文本中的一个基本单位,可以是字母、数字、标点符号、空格等。在计算机系统中,字符由一个唯一的数值表示,也就是编码位。【牧旗教程】
字符集是一个映射关系的集合,将每个字符映射成对应的计算机可以理解的数值。
因为计算机是美国发明的,所以最开始的字符集只有英文字母和各种符号,叫做 ASCII 字符集,上面的图片就是 ASCII 字符集的对应关系图,后来随着计算机的普及,中国制定了 GB2312 字符集来将中文编写进去。
后来为了适应各种语言同时出现的情况,Unicode 编码集产生了,这个字符集包含了全球所有的语言,也可以表示各种语言的字符、符号和表情符号等。
后来随着时间的推移,UTF-8 编码集诞生了,它可以用来表示 Unicode 字符集中的所有字符,并且它使用 1 到 4 个字节表示一个字符,可以根据字符的码位范围选择合适的字节长度。目前 UTF-8 编码是最常用编码集。【牧旗教程】
【字符串编码与解码】
我们在前面学过了什么是字符串,但是对计算机来说,它是没有字符串这个概念的,因为计算机只认识 0 和 1 ,我们需要把各种数据处理成计算机可以理解的数据流。
而字符串编码其实就是指将 字符串转换为数据流 的过程,字符串解码就是将 数据流转换为字符串 的过程。这样就实现了文本在计算机之间的流动和计算。
在 Python 中要想实现字符串的编码和解码需要用到内置的 encode 函数和 decode 函数。
使用 encode 函数将字符串转换成编码字节序列:
"牧旗教程"
# 将字符串使用 UTF-8 字符集转换为字节序列
encode
("UTF-8"
)print
(encoded)运行结果如下:
b'\xe7\x89\xa7\xe6\x97\x97\xe6\x95\x99\xe7\xa8\x8b'
对于计算机传递的字节流,可以使用 decode 函数解码成字符串。
b'\xe7\x89\xa7\xe6\x97\x97\xe6\x95\x99\xe7\xa8\x8b'
# 将字符串使用UTF-8字符集进行解码
decode
("UTF-8"
)print
(decoded)结果如下:
牧旗教程
通过合适的编码和解码操作,可以在 Python 中处理不同编码方式的字符串数据,确保数据的正确表示和传递。
【正则表达式】
正则表达式是一个在各种编程语言中通用的概念,是一种强大的文本模式匹配工具,用于在字符串中进行搜索、匹配和替换操作。它使用一种特定的语法规则,可以表示一类字符串的模式。
由于正则表达式的内容相对庞大和难以理解,笔者将其放在单独的一个小节做详细说明,详情请在教程的进阶内容中学习 正则表达式
例题
使用 Python 编写一段代码来找出以下的对话中,哪个单词是最长的:Python is a high-level programming language 【牧旗教程】
for 函数在 Python 中是循环函数,其意义是在一组元素中依次遍历每一个元素并做相对应的处理,更多关于 for 函数的使用会在后面的 for 结构教程中更深入学习。
【思路】通过观察这段话的特点,我们发现这段话的单词都是由空格进行分割的,那么我们就可以使用 split 函数将这段话切割成单词小块存放在列表中。
接下来我们只需要判断列表中哪个元素的长度最长就可以了,可以创建一个长度为 0 的变量,使用循环的方法遍历列表中的所有单词和这个变量做比较,一旦发现更长的单词就替换这个变量,循环一圈以后,这个变量就是最长的单词了。
【答案代码】
# 首先定义待处理的字符串
" Python is a high-level programming language "
# 将字符串按照空格进行分割,并将结果放在一个列表中
split
(" "
)
# 在循环遍历之前先定义一个空的变量,用于在后面进行赋值
""
# 选择分割列表中的每一个元素进行操作
for
word in
split_list: # 依次判断列表每个字符串的长度,和当前的longest_word变量长度做比较
if
len
(word) > len
(longest_word): # 将更长的字符串赋予给longest_word变量
print
(longest_word)运行上面的代码,结果如下:
programming
所以,这段话中最长的单词是 programming ,您也可以在代码中随意替换 words 变量,测试其他句子中的最长单词。
关注公众号【牧旗教程】,回复“更多例题”,获取更多题型进行训练~
您的打赏将帮助维护网站服务器的正常运营,并为作者的后续更新提供更多的动力。
Copyright © 2013-2023 Muqi Course. All Rights Reserved. 牧旗教程 版权所有 京ICP备2023029281号