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




目录
相关文章
|
3月前
|
IDE 数据挖掘 开发工具
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
58 7
|
29天前
|
存储 开发者 Python
python基本语法
Python的基本语法简洁而强大,支持多种编程范式,包括面向对象编程和函数式编程。通过掌握变量和数据类型、操作符、控制结构、函数、类和模块等基本概念,可以有效地编写高效、可读的Python代码。无论是初学者还是经验丰富的开发者,Python都提供了丰富的工具和库来满足各种编程需求。
68 13
|
3月前
|
Python
在 Python 中,如何将日期时间类型转换为字符串?
在 Python 中,如何将日期时间类型转换为字符串?
148 64
|
3月前
|
存储 索引 Python
Python 的基本语法
这些是 Python 的基本语法要素,掌握它们是学习和使用 Python 的基础。通过不断地实践和应用,你将能够更深入地理解和熟练运用这些语法知识,从而编写出高效、简洁的 Python 代码
169 61
|
30天前
|
存储 人工智能 Python
[oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
16 0
|
2月前
|
存储 测试技术 Python
Python 中别再用 ‘+‘ 拼接字符串了!
通过选择合适的字符串拼接方法,可以显著提升 Python 代码的效率和可读性。在实际开发中,根据具体需求和场景选择最佳的方法,避免不必要的性能损失。
62 5
|
2月前
|
Python
使用Python计算字符串的SHA-256散列值
使用Python计算字符串的SHA-256散列值
72 7
|
3月前
|
Python
在 Python 中,如何将字符串中的日期格式转换为日期时间类型?
在 Python 中,如何将字符串中的日期格式转换为日期时间类型?
61 6
|
3月前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
80 1
|
2月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!

热门文章

最新文章