字符串型对象
一. 字符串型对象的创建
1. 字符串的创建
字符串是 Python 中最常见的对象类型之一,凡是以双引号或单引号标注的文本,都是字符串(str)。
- 使用双引号创建:
"Hello World!" - 使用单引号创建:
'Hello World!'
2. 字符串概念辨析
- 字符串与数值:
1是数值,"1"是字符串。带引号的数值型对象也是字符串。 - 字符串与变量名:不带引号的通常是变量名称(如
a),带引号的是字符串对象(如"a")。变量名代入运算时,本质是该变量实际指代的对象在参与运算。 - 字符串与函数:
print是函数对象,"print"是字符串对象。
3. 单引号与双引号的嵌套
核心在于如何创建内部包含引号的字符串:
- 内含双引号:外部使用单引号标注,如
' "Hello!" '。 - 内含单引号:外部使用双引号标注,如
"What's up"。 - 混合情况:使用转义符
\对内部引号进行转义,如'\"What\'s Up?\"'。
4. 字符串换行与转义
- 三引号换行:使用
"""..."""或'''...'''标注带有换行的字符串。 - 转义符换行:使用
\n代表换行。 - 转义符理解:
\用于转换符号原有的意义。例如\n将字符n转义为换行,\'将引号转义为普通字符。
5. 字符串基础操作符
- 拼接 (
+):加号可用于拼接两个字符串,如"Hello" + "World"。 - 复制 (
*):乘号可用于复制字符串,如"Hello" * 2。 - 注意:操作符只能用于相同数据类型的对象,字符串不能直接与整数相加。
二. 字符串索引
1. 基础索引
- 规则:基本格式为
字符串对象[索引值]。Python 索引从0开始计算。 - 不可变性:字符串支持索引提取,但不支持通过索引赋值修改(如
a[1] = 'e'会报错)。
2. 反向索引
从最后一个字符往前,索引值依次为 -1、-2、-3… 以此类推。
a[-1]:索引最后一个字符。
3. 字符串切片
- 基本规则:
字符串[起始位置 : 结束位置 : 步长]。- 当出现冒号时默认进行切片。
- 左闭右开:包含起始位置,不包含结束位置。
- 默认值:起始为0,结束为字符串长度,步长为1。
- 正向切片:
a[0:2]:取前两个字符。a[::2]:每隔一个取一个(取奇数位)。
- 反向切片:
- 步长为负数时(如
::-1),表示从后往前索引。 - 此时起始位置索引必须大于结束位置索引,否则返回空值。
- 步长为负数时(如
三. 字符串的常用方法
所有对字符串的“修改”都会 返回一个新的字符串对象; 原字符串始终保持不变
1. 方法(Method)的概念
函数使用方式为 function(object),而方法的使用方式为 object.method()。
2. replace 方法
用于替换字符串中的指定内容。
- 特性:不会修改原对象,而是返回一个新的对象。
- 参数:
replace(旧内容, 新内容, 替换次数)。如果不指定次数,默认全部替换。
a = "Hallo"
# a中包含两个l,设置参数,替换第一个
a.replace("l", "a", 1)
3. find 方法
用于在指定区间内寻找确定字符串的索引值。
- 返回值:找到返回第一次出现的下标索引值,找不到返回 -1。
- 参数:
find(字符, 起始索引, 结束索引)。
# find方法可指定搜索范围,范围也是左闭右开;找到返回下标索引值,找不到返回-1
"Hello".find('l', 3, 5)
# 先切片后索引与先索引后切片
"Hello"[3: 5].find('l')
4. count 方法
用于计算指定索引区域内特定字符出现的次数。
- 用法:
count(字符, 起始索引, 结束索引)。
# 在索引区间[2, 3)中计算l出现的次数
"Hello".count('l', 2, 3)
5. split 方法
以指定字符为界切分字符串,并删除切分字符,返回列表。
# 两个连续字符作为切分依据时,将出现空字符
"Hello".split('l') # ['He', '', 'o']
# 首字母或尾字母字符作为切分依据时,将出现空字符
"Hello".split('H') # ['', 'ello']
"Hello".split('o') # ['Hell', '']
- 特殊情况:
- 两个连续字符作为切分依据时,会出现空字符。
- 首字母或尾字母作为切分依据时,会出现空字符。
6. partition 方法
类似于 split,但有两点区别:
- 保留分隔符:不会删除指定切分的元素。
- 只切一次:只针对第一个出现的字符进行切分。
- 返回值:返回一个包含3个元素的元组。
# 以e为切分字符,切分字符串hello
"Hello".partition('e') # ('H', 'e', 'llo')
# 切分字符出现多次时,只针对第一次出现位置字符进行切分
"Hello".partition('l') # ('He', 'l', 'lo')
# 切分首、尾字符时仍然会出现空字符
"Hello".partition('H') # ('', 'H', 'ello')
"Hello".partition('o') # ('Hell', 'o', '')
7. upper & lower 方法
upper():将字符串所有字符转换为大写。lower():将字符串所有字符转换为小写。
8. strip 方法
用于去除字符串首尾的指定字符。
- 默认:参数为空时,默认删除首尾空格。
- 指定:
strip('char')删除首尾指定的字符,中间的字符不受影响。
# 删除指定字符
"HHelloH".strip('H') #'ello'
# 只能删除首尾字符
"Hello".strip('e') #'Hello'
9. join 方法
用于在指定字符串中间穿插其他字符串。
- 用法:
"分隔符".join(对象)。
" ".join("Hello") 结果为 `'H e l l o'`。
10. format 方法
主要用于格式化输出,实现自动填充。
- 大括号对应:
"www.{}.com".format("baidu")。
url = 'http://www.{}.com'
# 可实现针对大括号内进行字符串的自动填充
url.format('baidu') #'http://www.baidu.com'
- 数字对应:
"{0} {1}".format(val1, val2),利用索引控制填充位置。
# 多位置可利用数字进行自动填充
# 多位置可利用数字进行自动填充
text = '亲爱的{0},祝您{1}快乐,{2}'
text.format('荀先生', '春节', '万事如意')
- 关键字对应:
"{name}".format(name="Li"),利用参数名进行填充。
text = '亲爱的{姓名},祝您{节日}快乐,{祝福语}'
text.format(节日 = '端午节', 姓名 = '李小姐', 祝福语 = '大吉大利')
# '亲爱的李小姐,祝您端午节快乐,大吉大利'
795

被折叠的 条评论
为什么被折叠?



