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月前
|
人工智能 Ubuntu IDE
【Python】基础:环境配置与基础语法
本文介绍了Python编程语言及其环境配置方法。Python由Guido van Rossum于1991年创建,以其简洁、易学和强大的功能著称。文章详细讲解了Python的主要特点、Windows和Ubuntu下的安装配置步骤、基础语法、控制流、函数、文件操作、模块使用及面向对象编程等内容,帮助读者快速入门Python编程。
89 4
|
2月前
|
IDE 数据挖掘 开发工具
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
41 7
|
2月前
|
存储 索引 Python
Python 的基本语法
这些是 Python 的基本语法要素,掌握它们是学习和使用 Python 的基础。通过不断地实践和应用,你将能够更深入地理解和熟练运用这些语法知识,从而编写出高效、简洁的 Python 代码
83 5
|
2月前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
53 1
|
2月前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
2月前
|
存储 Python Perl
python正则语法
本文介绍了正则表达式的基础知识及其在 Python 中的应用。首先解释了为什么要使用正则表达式,通过一个判断手机号的示例展示了正则表达式的简洁性。接着详细介绍了 `re` 模块的常用方法,如 `match()`、`search()`、`findall()`、`finditer()` 等,并讲解了正则表达式的基本语法,包括匹配单个字符、数字、锚字符和限定符等。最后,文章还探讨了正则表达式的高级特性,如分组、编译和贪婪与非贪婪模式。
27 2
|
3月前
|
存储 程序员 开发者
Python编程入门:从零开始掌握基础语法
【10月更文挑战第21天】本文将带你走进Python的世界,通过浅显易懂的语言和实例,让你快速了解并掌握Python的基础语法。无论你是编程新手还是想学习一门新的编程语言,这篇文章都将是你的不二之选。我们将一起探索变量、数据类型、运算符、控制结构、函数等基本概念,并通过实际代码示例加深理解。准备好了吗?让我们开始吧!
|
3月前
|
存储 安全 Serverless
Python学习四:流程控制语句(if-else、while、for),高级数据类型(字符串、列表、元组、字典)的操作
这篇文章主要介绍了Python中的流程控制语句(包括if-else、while、for循环)和高级数据类型(字符串、列表、元组、字典)的操作。
50 0
|
3月前
|
Python
Python操作:字符串--列表--元组--字典--运算符 (一)
Python操作:字符串--列表--元组--字典--运算符 (一)
25 0
|
3月前
|
Python
Python操作:字符串--列表--元组--字典--运算符 (二)
Python操作:字符串--列表--元组--字典--运算符 (二)
27 0
下一篇
开通oss服务