网站首页 > 技术文章 正文
字符串介绍
定义
如下定义的变量a,存储的是数字类型的值
a = 100
如下定义的变量b,存储的是字符串类型的值
b = "www.baidu.com"
# 或者
b = 'www.baidu.com'
小总结:
- 双引号或者单引号中的数据,就是字符串
下标
下标:就是标记空间的一个数字
有些文档叫法为“索引”,个人觉得其实下标更好的体现它的特点。
如果有字符串:name = 'abcdef',在内存中的实际存储如下:
下标为正数
第0个空间 | 第1个空间 | 第2个空间 | 第3个空间 | 第4个空间 | 第5个空间 |
a | b | c | d | e | f |
下标为负数
第 -6 个空间 | 第 -5 个空间 | 第 -4 个空间 | 第 -3 个空间 | 第 -2 个空间 | 第 -1 个空间 |
a | b | c | d | e | f |
特点:
- 每个字符单独存储,各占一个存储空间
- 为了方便标记处哪个空间存放的是哪个字符,Python使用了"下标"
- 如果从左侧开始编号,那么下标从 0 开始
- 如果从右侧开始编号,那么下标从-1开始
- 如果字符串只有3个字符例如"abc",那么能用的下标为0、1、2不能使用超过2以上的,这种情况就是"越界"很危险会导致程序崩溃
下标的使用
name = 'abcdef'
print(name[0])
print(name[1])
print(name[2])
运行结果:
a
b
c
字符串切片
什么是切片
较为官方的说法:切片是指对操作的对象截取其中一部分的操作
通俗来说:一种能够从数据中取到一部分数据的方式
例如:
有一个字符串"abcdef",我们可以通过切片取到"cde"
切片不仅可以在字符串中应用,还可以对列表、元组等进行操作,简言之“切片”功能很重要。
本节课我们以字符串为例讲解“切片”
使用方式
语法
[起始:结束:步长]
注意:
- 选取的区间从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身),步长表示选取间隔
- 默认“步长”为1,即取完一个下标的数据之后,第二个下标的是在刚刚下标基础上+1
- 步长为正数,表示从左向右取数据
- 步长为负数,表示从右向左取数据
示例代码
示例一:
name = 'abcdef'
print(name[0:3]) # 取下标为0、1、2的字符,注意取不到下标为3的空间
运行结果:
abc
示例二:
name = 'abcdef'
print(name[:3]) # 取下标为0、1、2的字符,注意取不到下标为3的空间
'''
如果第一个参数没写则默认为0开始
'''
运行结果:
abc
示例三:
name = 'abcdef'
print(name[3:5]) # 取下标为3、4 的字符
运行结果:
de
示例四:
name = 'abcdef'
print(name[2:]) # 取下标为2开始到最后的字符
运行结果:
cdef
示例五:
name = 'abcdef'
print(name[1:-1]) # 取 下标为1开始到右侧第2个字符之间的所有字符
运行结果:
bcde
示例六:
name = 'abcdef'
print(name[1:5:2])
'''
步长为2表示间隔1个值取一次
'''
运行结果:
bd
示例七:
name = 'abcdef'
print(name[5:1:-1])
'''
5: 起始位置
1: 结束位置 (不包含)
-1: 步长,表示从右往左取值
'''
运行结果:
fedc
示例八:
name = 'abcdef'
print(name[5:1:-2])
'''
5: 起始位置
1: 结束位置 (不包含)
-2: 步长,表示从右往左取值并间隔一个值
'''
运行结果:
fd
示例九:
name = 'abcdef'
print(name[::1])
'''
起始位置: 未设置
结束位置: 未设置
1: 步长
表示从最左边取值到最右边(包含最右边)
'''
运行结果:
abcdef
示例十:
name = 'abcdef'
print(name[::])
运行结果:
abcdef
说明:
- 开始位置、结束位置都未指定,且步长也未指定那么步长用默认的1,则此时从最左取到最右
示例十一:
name = 'abcdef'
print(name[::-1])
运行结果:
fedcba
说明:
- 开始位置、结束位置都未指定,步长为-1,此时从最右取到最左
示例十二:
name = 'abcdef'
print(name[::-2])
运行结果:
fdb
说明
- 开始、结束位置都未指定,且步长是-2,那么就意味着从右侧往左取数据,且步长为2(即隔一个取一个)
总结
- 切片使用规则中,要么一个冒号[开始位置:结束位置],要么两个冒号[开始位置:结束位置:步长]
- 不写步长时,默认为1
- 步长为正数,表示从左向右取数据
- 步长为负数,表示从右向左取数据
- 当开始位置、结束位置都没有设定时,要看步长,如果步长为正数此时开始位置理解为最左 结束位置为最右,如果步长为负数此时开始位置理解为最右 结束位置为最左
字符串常见操作
find 方法
检测str是否包含在 my_str中,如果是返回开始的索引值,否则返回-1
my_str.find(str, start=0, end=len(mystr))
In [2]: my_str = "welcome to www.baidu.com"
In [3]: my_str.find("to")
Out[3]: 8
说明:
- 上述运行中数值8表示"to"这个字符串在原字符串的开始下标值是8
rfind 方法
类似于find()函数,不过是从右边开始查找,返回的索引是从左边开始
my_str.rfind(str, start=0, end=len(my_str) )
In [2]: my_str = "welcome to www.baidu.com"
In [3]: my_str.rfind("to")
Out[3]: 8
count 方法
返回str在start和end之间在 my_str里面出现的次数
my_str.count(str, start=0, end=len(mystr))
In [2]: my_str = "welcome to www.baidu.com"
In [3]: my_str.count("w")
Out[3]: 4
replace 方法
把 my_str 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次
my_str.replace(str1, str2, mystr.count(str1))
In [2]: my_str = "welcome to www.baidu.com"
In [3]: my_str.replace('w', 'W', 1)
Out[3]: 'Welcome to www.baidu.com'
split 方法
以 str 为分隔符切片 my_str,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串
my_str.split(str=" ", maxsplit)
In [1]: my_str = "welcome to www.baidu.com"
In [2]: my_str.split(" ")
Out[2]: ['welcome', 'to', 'www.baidu.com']
In [3]: my_str.split(" ", 1)
Out[3]: ['welcome', 'to www.baidu.com']
In [4]:
startswith 方法
检查字符串是否是以 指定的字符串 开头, 是则返回 True,否则返回 False
my_str.startswith('这里写入你指定的字符串')
In [1]: my_str = "welcome to www.baidu.com"
...
In [4]: my_str.startswith('welcome')
Out[4]: True
In [5]: my_str.startswith('Welcome')
Out[5]: False
endswith 方法
检查字符串是否以指定字符串结束,如果是返回True,否则返回 False
my_str.endswith('这里写入你指定的字符串')
In [1]: my_str = "welcome to www.baidu.com"
...
In [6]: my_str.endswith('com')
Out[6]: True
lower 方法
转换 my_str 中所有大写字符为小写
my_str.lower()
In [8]: my_str = "WELCOME to www.baidu.com"
In [9]: my_str.lower()
Out[9]: 'welcome to www.baidu.com'
upper 方法
转换 my_str 中所有小写字母为大写
my_str.upper()
In [10]: my_str = "welcome to www.baidu.com"
In [11]: my_str.upper()
Out[11]: 'WELCOME TO WWW.BAIDU.COM'
strip 方法
删除字符串两端的空白字符
In [12]: my_str = " welcome to www.baidu.com "
In [13]: my_str.strip()
Out[13]: 'welcome to www.baidu.com'
partition 方法
把my_str以str分割成三部分,str前,str和str后
my_str.partition(str)
In [14]: my_str = "welcome to www.baidu.com"
In [15]: my_str.partition('to')
Out[15]: ('welcome ', 'to', ' www.baidu.com')
splitlines 方法
按照行分隔,返回一个包含各行作为元素的列表
my_str.splitlines()
In [16]: my_str = """welcome to www.tulingxueyuan.com
...: thank you
...: good good study day day up
...: """
In [17]: my_str.splitlines()
Out[17]: ['welcome to www.tulingxueyuan.com', 'thank you', 'good good study day day up']
isalpha 方法
如果 my_str 所有字符都是字母 则返回 True,否则返回 False
my_str.isalpha()
In [18]: my_str = "abc123"
In [19]: my_str.isalpha()
Out[19]: False
In [20]: my_str = "abc"
In [21]: my_str.isalpha()
Out[21]: True
isdigit 方法
如果 my_str 只包含数字则返回 True 否则返回 False
my_str.isdigit()
In [60]: my_str = "abc123"
In [61]: my_str.isdigit()
Out[61]: False
In [62]: my_str = "123"
In [63]: my_str.isdigit()
Out[63]: True
isalnum 方法
如果 my_str 所有字符都是字母或数字则返回 True,否则返回 False
my_str.isalnum()
In [2]: my_str = 'abc123'
In [3]: my_str.isalnum()
Out[3]: True
In [4]: my_str = 'abc123_'
In [5]: my_str.isalnum()
Out[5]: False
join 方法
my_str 中每个元素后面插入str,构造出一个新的字符串
my_str.join(str)
In [6]: my_str = '-'
In [7]: str_list = ['welcome', 'to', 'changsha']
In [8]: my_str.join(str_list)
Out[8]: 'welcome-to-changsha'
说明
关于字符串的常见操作上面列举了16个,其实还有很多,但各位同学们要注意
- 不要背,理解即可
- 忘记没关系,可以查阅资料
- 学会怎么用,什么时候用什么这是关键点
猜你喜欢
- 2024-10-05 Python基础知识——字符串(python字符串的常用方法)
- 2024-10-05 你会在 Python 中使用字符串吗?(python字符串需要用什么包裹)
- 2024-10-05 javascript内置对象总结 - String
- 2024-10-05 Python 中字符串和字符串处理的综合指南
- 2024-10-05 C++中的string用法(c++ string用法总结)
- 2024-10-05 Excel文本函数——CONCATENATE函数详解
- 2024-10-05 探究C语言中字符串大小和长度易错点
- 2024-10-05 【PythonTip题库300题】第47题:字符串中缺失的字母
- 2024-10-05 Rust: 字符串总结,虽常见但非常重要
- 2024-10-05 这些字符串处理函数你用过吗(字符串常用操作函数)
- 08-03MySQL数据库的预处理详解
- 08-03《阿常·MySQL 70讲》全套教学视频
- 08-03隐式等待、显示等待和强制等待
- 08-03零基础C#上位机框架项目实例(完结篇)
- 08-03一文搞懂构建Web内容的技术
- 08-03西门子WINCC中的VBScript(VBS)常用于自动化脚本开发
- 08-03力控和sql2000之间的数据转储
- 08-03组态王|通过日历控件选择时间段查询历史报警
- 1521℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 627℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 527℃MySQL service启动脚本浅析(r12笔记第59天)
- 492℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 492℃启用MySQL查询缓存(mysql8.0查询缓存)
- 479℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 461℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 458℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- htmlbackground-image (68)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)