Python的进阶之道【AIoT阶段一(上)】(十五万字博文 保姆级讲解)—玩转Python语法(一):面向过程—背上我的行囊—字符串(1)(十九)

简介: 玩转Python语法(一):面向过程

4.5 字符串

字符串是 Python 中的一个基本数据类型,我们曾经在 1.3.6 简单字符串介绍 中简单的提到过这个知识点,那时我们刚刚接触 Python,并且字符串较难且尤为重要,故只在那里进行简单的介绍,从本节开始,我们将系统的给大家介绍这个重要的数据类型,它理解起来并不难,因为我们自第一个程序就用到了字符串:hello world,本节涉及众多的与字符串相关的方法,大家没必要去记忆(应付期末除外),我在 *4.5.7 字符串常用函数(方法)汇总 进行了大汇总,大家只需要在需要的时候进行查询即可.字符串是包含若干字符的容器,属于不可变有序序列,我们使用''(单引号) ""(双引号) ''' '''(三引号)为定界符,不同的定界符之间可以相互嵌套:

print('Marry said,"hello 辰chen"')
# 运行结果为:Marry said,"hello 辰chen"

*4.5.1 字符串的驻留机制

注:本小节带 *,不需要进行学习,可以简单进行了解

⛲️ 字符串的驻留机制其实就是仅保存一份相同且不可变的字符串的方式,即对于同一个字符串,它们所指的 id 地址是同一个地点,我们可以使用 id() 函数去查看内存地址:

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/15 12:56
# 欢迎大家关注AIoT相关博客~
a = '辰chen'
b = "辰chen"
c = '''辰chen'''
print(a, id(a))
print(b, id(b))
print(c, id(c))


image.png

我们发现,虽然我们定义了三个变量,但是只要它们指向的字符串是相同的,三个变量在内存中的地址就是相同的,这就是字符串的驻留机制


4.5.2 字符串的常用操作

1️⃣ 字符串的查询操作:使用函数 index() rindex() find() rfind(),下面举例子去说明,比如我们有模板串:abababa,我们要查找子串aba的位置,索引如下图所示:

image.png

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/15 13:23
# 欢迎大家关注AIoT相关博客~
s = 'abababa'
s1 = 'aba'
# index() 查找第一次出现的索引,如果不存在该子串显示 ValueError
print(s.index(s1))
# rindex() 查找最后一次出现的索引,如果不存在该子串显示 ValueError
print(s.rindex(s1))
# find() 查找第一次出现的索引,如果不存在则返回 -1
print(s.find(s1))
# find() 查找最后一次出现的索引,如果不存在则返回 -1
print(s.rfind(s1))
print(s.find('k'))
print(s.index('k'))

image.png

2️⃣ 我们使用 upper() lower() swapcase() capitalize() title(),去进行大小写的转换,具体函数给出代码和运行结果,读者根据代码去理解函数

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/15 13:38
# 欢迎大家关注AIoT相关博客~
s1 = 'hello, my name is chen.'
s2 = 'HELLO, MY NAME IS CHEN.'
s3 = 'Hello. My naMe Is ChEn'
s4 = 'HEllO, my NaME iS chEn'
s5 = 'HELlo, My nAme Is CHeN'
print('----upper() 将所有的字符都转成大写字母----')
print(s1)
print(s1.upper())
print('----lower() 将所有的字符都转成小写字母----')
print(s2)
print(s2.lower())
print('----swapcase() 将小写字母转为大写字母,大写字母转为小写字母----')
print(s3)
print(s3.swapcase())
print('----capitalize() 把第一个字符转为大写,其余转为小写----')
print(s4)
print(s4.capitalize())
print('----title() 把每个单词的第一个字符换为大写,其余换为小写----')
print(s5)
print(s5.title())

image.png

3️⃣ 字符串的对齐操作:我们使用 center() ljust() rjust() zjust(),去进行字符串的居中对齐,左对齐与右对齐,具体函数给出代码和运行结果,读者根据代码去理解函数

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/15 14:39
# 欢迎大家关注AIoT相关博客~
s = 'hello,辰chen'
# 宽度就是指在进行对齐操作后,所展示的字符个数,如s的宽度为:11
print('----center():居中对齐,第一个参数为宽度,第二个参数为填充符(默认空格)----')
print(s.center(19, '*'))
print(s.center(19))
print('----ljust():左对齐,第一个参数为宽度,第二个参数为填充符(默认空格)----')
print(s.ljust(19, '*'))
print('----rjust():右对齐,第一个参数为宽度,第二个参数为填充符(默认空格)----')
print(s.rjust(19, '*'))
print('----zjust():右对齐,只有一个参数(宽度),填充符为0----')
print(s.zfill(19))
print('-----------------------')
# 如果我们传入的宽度是要小于我们的原字符串宽度,则不会对字符串有任何修改:
print(s.center(5, '*'))
print(s.ljust(5, '*'))
print(s.rjust(5, '*'))
print(s.zfill(5))

image.png

4️⃣ 字符串的分割:我们使用 split() 和 rsplit() 两个方法,分别实现从左劈分字符串以及从右分割字符串

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/15 15:15
# 欢迎大家关注AIoT相关博客~
# 使用 split() 和 rsplit() 进行划分,返回值为列表
s1 = 'hello 辰chen, your blog is really good'
s2 = 'hello|辰chen|your|blog|is|really|good'
print('---------使用 split() 进行划分---------')
# 默认按照空格进行划分
print(s1.split())
# 按照传入的参数进行划分
print(s2.split(sep='|'))
# 按照传入的参数进行划分,设置最大划分次数为maxsplit
print(s2.split(sep='|', maxsplit=2))
print('---------使用 rsplit() 进行划分---------')
# 默认按照空格进行划分
print(s1.rsplit())
# 按照传入的参数进行划分
print(s2.rsplit(sep='|'))
# 按照传入的参数进行划分,设置最大划分次数为maxsplit
print(s2.rsplit(sep='|', maxsplit=2))

image.png

5️⃣ 判断字符串的操作:我们可以利用方法 isidentifier() 去判断一个字符串是否由合法标识符组成,判断合法标识符我们在 *1.2.1 标识符和保留字 有过介绍,还可以利用 isspace() 方法判断是否字符串是由空格所组成的,也有判断是否由数字数字组成的方法:isdecimal() isnumeric();判断是否由字母组成的方法:isalpha();判断是否由数字和字母组成的方法:isalnum()

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/15 15:53
# 欢迎大家关注AIoT相关博客~
s='a,b,c'
s1='hello辰chen'
# isidentidier() 用来判断字符串是否由合法标识符组成:
print('1.', s.isidentifier())    # False
print('2.',s1.isidentifier())    # True
# isspace() 用来判断字符串是否全由空格(回车,换行,水平制表)组成:
print('3.','\t'.isspace())       # True
print('4.', '   '.isspace())     # True
# isalpha() 用来判断字符串字符串是否全由字母组成
print('5.','abc'.isalpha())      # True
print('6.','abc1'.isalpha())     # False
print('7.','辰chen'.isalpha())    # True
# isdecimal() 用来判断字符串是否全部由十进制数组成
print('8.','123'.isdecimal())     # True
print('9.','123四'.isdecimal())   # False
# isnumeric() 用来判断字符串是否全部由数字组成(罗马数字不可以)
print('10.','123'.isnumeric())     # True
print('11.','123四'.isnumeric())  # True
print('12.','IIV'.isnumeric())    # False
# 判断字符串是否全部由数字和字母组成
print('13.','abc123'.isalnum())    # True
print('14.','123辰chen'.isalnum())  # True
print('15.','123辰chen!'.isalnum()) # False

image.png

6️⃣ 字符串的替换与合并:我们使用 replace() 去对字符串进行替换,使用 join() 对字符串进行合并,replace(obj1, obj2, frequency):将字符串 obj1 替换为 obj2,一共替换 frequency 次(默认全部替换),使用 join() 方法进行字符串的合并时,我们可以选择合并过程中字符串之间通过什么进行连接.

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/15 16:46
# 欢迎大家关注AIoT相关博客~
# 使用 replace() 方法对字符串进行替换操作:
s = 'hello Python'
# 把 Python 替换为 辰chen
print(s.replace('Python', '辰chen'))
s = 'hello Python Python Python'
# 把 Python 替换为 辰chen,一共替换2次
print(s.replace('Python', '辰chen', 2))
# 使用 join() 方法把列表(元素为字符串类型)或元组(元素为字符串类型)连接为字符串
l = ['hello', '辰chen', 'Python']
print(' '.join(l))   # 连接的地方用' '隔开
t = ('hello', '辰chen', 'Python')
print('*'.join(l))   # 连接的地方用'*'隔开
# 使用 join() 方法操作于字符串:
print('*'.join('Python'))

image.png

这里额外说一点,我们经过以上的学习知道,我们连接两个字符串可以使用 join() 方法,我们在这里还可以直接使用+去把两个字符串连接称为一个新的字符串:

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/15 19:40
# 欢迎大家关注AIoT相关博客~
a = 'hello'
b = '辰chen'
c = a + ',' + b
print(c)

image.png

但是我们并不建议使用这种方法,我们使用 join() 对字符串拼接的效率要远高于使用+去拼接.


4.5.3 字符串的比较

🚩我们使用比较运算符 <,<=,>,>=,==,!=,比较的规则是我们逐位去对比两个字符串的 ordinal value(原始值),我们使用函数 ord() 就可以获取字符的 ordinal value(原始值),这里还有一个逆操作,我们可以使用函数 chr() 获取 ordinal value 所对应的字符,其实对于我们而言,直接理解成比较两个字符的 ASCII码即可,ASCII码表见 *1.4 二进制与字符编码

# 博主:辰chen
# 博客地址:https://chen-ac.blog.csdn.net/
# 开发时间:2021/12/15 19:09
# 欢迎大家关注AIoT相关博客~
print('aba' > 'ab')   # True
print('aba' >= 'aba') # True
print('apple' > 'banana') # False
print(ord('a'), ord('b'))
print(ord('辰'))
print(chr(97), chr(98))
print(chr(36784))

image.png




目录
相关文章
|
19天前
|
Java 编译器 C语言
Python速成篇(基础语法)上
Python速成篇(基础语法)上
|
21天前
|
Python
1167: 分离字符串(PYTHON)
1167: 分离字符串(PYTHON)
|
5天前
|
Python
Python 字符串格式化指南
本文介绍了Python中的三种字符串格式化方法:1) 使用 `%` 操作符,如 `%s` 和 `%d`;2) `str.format()` 方法,通过 `{}` 占位符插入变量;3) Python 3.6 引入的 f-strings,直接在字符串内嵌入变量。此外,还提到了高级用法,如格式控制(如指定小数位数)。这些方法有助于更有效地处理和格式化字符串输出。
7 0
|
12天前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
53 0
|
12天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
57 0
|
12天前
|
Python
02-python的基础语法-01python字面量/注释/数据类型/数据类型转换
02-python的基础语法-01python字面量/注释/数据类型/数据类型转换
|
13天前
|
数据采集 Python
python学习9-字符串
python学习9-字符串
|
19天前
|
存储 监控 Java
Python速成篇(基础语法)下(新年快乐♥)
Python速成篇(基础语法)下(新年快乐♥)
|
21天前
|
Java 索引 Python
Python标准数据类型-字符串常用方法(下)
Python标准数据类型-字符串常用方法(下)
22 1
|
21天前
|
XML 编解码 数据格式
Python标准数据类型-String(字符串)
Python标准数据类型-String(字符串)
23 2