字符串类型


字符串的介绍— “要善良,要勇敢,要像星星一样努力发光”

在 Python 中,字符串是一种 表示文本数据的序列 ,由一系列字符组成。可以使用单引号、双引号或三重引号来创建字符串。其对应的数据类型是 string,在 Python 中可以使用 str 内置函数将其他类型的数据强制转换为字符串。【牧旗教程】

字符串变量的创建主要有以下三种方式:

创建方式 描述
单引号创建 最基础的创建字符串的方式,用单引号将文本内容包裹起来。
双引号创建 和单引号的效果相同,区别是可以在双引号创建的字符串中使用单引号。
三引号创建 使用三引号创建的字符串可以跨越多行,且保留字符串中的换行符。这对于创建格式化文本,如邮件、模板等非常有用。

让我们通过代码来更加深入了解一下:

# 方式一 :使用单引号创建字符串
string_1 = '牧旗教程'
 
# 方式二 : 使用双引号创建字符串
string_2 = "'牧旗教程'创立的初衷是帮助新手小白更好地学习编程。"
 
# 方式三 : 使用三重引号创建字符串
string_3 = '''
大家好,
这里是牧旗教程
我将为你们提供详细的编程指导
     —— 薛思聪
'''
 
# 输出结果
print(string_1)
print(string_2)
print(string_3)

运行上面的代码文件,可以看到输出结果如下:

牧旗教程
'牧旗教程'创立的初衷是帮助新手小白更好地学习编程。
大家好,
这里是牧旗教程
我将为你们提供详细的编程指导
—— 薛思聪

从结果中可以看出,使用双引号创建的字符串在文本中可以使用单引号,使用三引号创建的文本,可以在创建时和输出结果时保留了换行、空格等格式。【牧旗教程】

另外,对于其他格式的数据可以使用内置函数 str 强制转换成字符串,来看示例:

type 函数 是 Python 中比较常见的内置函数,可以用来查看任何变量的数据类型。

# 原数据是数字格式
value = 100
print(type(value))
 
# 强制转换成字符串格式
result = str(value)
print(type(result))

运行上述代码,结果如下:

<class 'int'>
<class 'str'>

可以看出,原来是 int 整数类型的变量,经过 str 函数强制转换为了 string 字符串类型。


字符串的转义符

转义符用于在字符串中插入特殊字符,这些特殊字符具有特定的含义,在字符串中使用这样的标识,将改变原有的字母含义。以下是一些常见的转义符,在后面的教程中我会一一为大家讲解:

换行符 名称 描述
\n 换行符 使用在字符串中代表换行,输出结果会另起新的一行。
\t 制表符 表示在字符串中插入一个制表符,用于缩进,通常用于对齐文本或创建表格。
\\ 反斜杠本身 由于 \ + 特殊字母的组合形成了转义符,那么如果我们想在字符串中使用反斜杠本身,就很容易引起冲突,在反斜杠前面再加一个反斜杠,来取消其特殊含义。
\' 和 \" 单引号和双引号 为了防止在字符串中使用引号会与最外层包裹的引号产生冲突,可以在需要使用引号的地方前面加一个反斜杠来取消其特殊含义。

为了帮助大家理解,我们来看一些示例:

首先在字符串中使用换行符:

# 在字符串中使用换行符
string1 = '牧旗教程\n免费\n详细\n专业'
print(string1)

运行代码后结果如下:

牧旗教程
免费
详细
专业

在输出的结果中,会根据 \n 的位置自动进行换行。

这次我们通过在字符串中使用制表符来创建一个简单的表格:

# 在字符串中使用换行符
title = "姓名\t性别\t年龄"
row1 = "小明\t男\t18"
row2 = "小红\t女\t16"
row3 = "小亮\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 代表第三个元素,以此类推。这一点非常重要,很多初学者会弄混淆。

让我们结合示例来更加深入了解上面提到的两种字符串的访问方法:


字符串的操作

字符串有很多的基本操作,可以用来对其进行处理、拼接、调整等,方式如下:

名称 关键词 描述
字符串的连接 + 和 * 将两个或者多个字符串拼接起来,组成一个新的字符串。
字符串包含关系判断 in 用来判断两个字符串是否存在包含关系。
相关内置函数 见下面详细教程 Python 中有很多专门处理字符串的内置函数。

让我们在下面的教程结合示例依次学习相关操作:


字符串的进阶内容

以下的内容涉及到一些进阶的知识和内容,对于新手小白来说可以做粗略的了解。

【字符集】

字符是指文本中的一个基本单位,可以是字母、数字、标点符号、空格等。在计算机系统中,字符由一个唯一的数值表示,也就是编码位。【牧旗教程】

字符集是一个映射关系的集合,将每个字符映射成对应的计算机可以理解的数值。

无法显示

因为计算机是美国发明的,所以最开始的字符集只有英文字母和各种符号,叫做 ASCII 字符集,上面的图片就是 ASCII 字符集的对应关系图,后来随着计算机的普及,中国制定了 GB2312 字符集来将中文编写进去。

后来为了适应各种语言同时出现的情况,Unicode 编码集产生了,这个字符集包含了全球所有的语言,也可以表示各种语言的字符、符号和表情符号等。

后来随着时间的推移,UTF-8 编码集诞生了,它可以用来表示 Unicode 字符集中的所有字符,并且它使用 1 到 4 个字节表示一个字符,可以根据字符的码位范围选择合适的字节长度。目前 UTF-8 编码是最常用编码集。【牧旗教程】

【字符串编码与解码】

我们在前面学过了什么是字符串,但是对计算机来说,它是没有字符串这个概念的,因为计算机只认识 0 和 1 ,我们需要把各种数据处理成计算机可以理解的数据流。

而字符串编码其实就是指将 字符串转换为数据流 的过程,字符串解码就是将 数据流转换为字符串 的过程。这样就实现了文本在计算机之间的流动和计算。

无法显示

在 Python 中要想实现字符串的编码和解码需要用到内置的 encode 函数和 decode 函数。

使用 encode 函数将字符串转换成编码字节序列:

s = "牧旗教程"
 
# 将字符串使用 UTF-8 字符集转换为字节序列
encoded = s.encode("UTF-8")
 
print(encoded)

运行结果如下:

b'\xe7\x89\xa7\xe6\x97\x97\xe6\x95\x99\xe7\xa8\x8b'

对于计算机传递的字节流,可以使用 decode 函数解码成字符串。

b = b'\xe7\x89\xa7\xe6\x97\x97\xe6\x95\x99\xe7\xa8\x8b'
 
# 将字符串使用UTF-8字符集进行解码
decoded = b.decode("UTF-8")
 
print(decoded)

结果如下:

牧旗教程

通过合适的编码和解码操作,可以在 Python 中处理不同编码方式的字符串数据,确保数据的正确表示和传递。

【正则表达式】

正则表达式是一个在各种编程语言中通用的概念,是一种强大的文本模式匹配工具,用于在字符串中进行搜索、匹配和替换操作。它使用一种特定的语法规则,可以表示一类字符串的模式。

由于正则表达式的内容相对庞大和难以理解,笔者将其放在单独的一个小节做详细说明,详情请在教程的进阶内容中学习 正则表达式


例题

使用 Python 编写一段代码来找出以下的对话中,哪个单词是最长的:Python is a high-level programming language 【牧旗教程】

for 函数在 Python 中是循环函数,其意义是在一组元素中依次遍历每一个元素并做相对应的处理,更多关于 for 函数的使用会在后面的 for 结构教程中更深入学习。

【思路】通过观察这段话的特点,我们发现这段话的单词都是由空格进行分割的,那么我们就可以使用 split 函数将这段话切割成单词小块存放在列表中。

接下来我们只需要判断列表中哪个元素的长度最长就可以了,可以创建一个长度为 0 的变量,使用循环的方法遍历列表中的所有单词和这个变量做比较,一旦发现更长的单词就替换这个变量,循环一圈以后,这个变量就是最长的单词了。

【答案代码】

# 首先定义待处理的字符串
words = " Python is a high-level programming language "
 
# 将字符串按照空格进行分割,并将结果放在一个列表中
split_list = word.split(" ")
 
# 在循环遍历之前先定义一个空的变量,用于在后面进行赋值
longest_word = ""
 
# 选择分割列表中的每一个元素进行操作
for word in split_list:
    # 依次判断列表每个字符串的长度,和当前的longest_word变量长度做比较
    if len(word) > len(longest_word):
       # 将更长的字符串赋予给longest_word变量
        longest_word = word
 
print(longest_word)

运行上面的代码,结果如下:

programming

所以,这段话中最长的单词是 programming ,您也可以在代码中随意替换 words 变量,测试其他句子中的最长单词。

关注公众号【牧旗教程】,回复“更多例题”,获取更多题型进行训练~

您的打赏将帮助维护网站服务器的正常运营,并为作者的后续更新提供更多的动力。

无法显示 无法显示