学习目标:掌握字符串的常用操作,如索引、切片、拼接、格式化、常用方法。
- 具体内容:
- 字符串索引和切片:
s[0],s[-1],s[1:4]等。 - 字符串拼接:使用
+或join方法。 - 字符串常用方法:
len()获取长度lower()/upper()大小写转换strip()去除空白split()分割replace()替换find()/index()查找startswith()/endswith()判断开头结尾
- 字符串格式化复习(f-string重点)。
- 字符串索引和切片:
- 练习任务:
- 定义一个字符串
s = "Hello, Python!",完成以下操作并输出结果:- 取出前5个字符
- 将字符串全部转为大写
- 用
"*"替换其中的"o" - 按空格分割字符串
- 让用户输入一个句子,统计其中有多少个单词(按空格分割)。
- 定义一个字符串
- 小挑战:实现一个简单的用户名处理程序:输入全名(如 "John Doe"),输出姓氏和名字的首字母大写形式(如 "John D.")。
字符串索引
正向索引
从零开始,依次递增
字符串str='dskj'中正向索引从0开始
负向索引
从-1开始,依次递减。负向索引从-1开始递减
越界操作
当字符串本身没有那么多字符,而要求输出很多字符时,会出现越界的情况。自动情况下会自动截断,主动使用造成的越界会造成error
切片
字符串切片通过str[strat:stop:step]获取切片后的子序列,遵循左闭右开的原则
start:开始索引
stop:结束索引
step:步长(正数从左到右,负数从右到左)。默认为1,为负数时start与stop互换,否则为空值
越界保护
当切片索引越界时,会自动截断,不会自动报错。
字符串拼接
‘+’加号
join()方法
高效连接可以迭代的对象中的多个字符串,是处理大量字符串的首选方法。
字符串常用方法
查找
len()方法
获取字符串的长度
count()方法
语法:str.count(sub, start= 0,end=len(string))
sub:要统计的子串
start:开始的索引位置
end:结束的索引位置
统计子串出现的次数
find()方法
语法:str.find(str, beg=0, end=len(string))
查找子串,返回索引(不存在返回-1)
index()方法
语法与find()方法相同
查找子串,不存在时会报错
判断
类型判断
isalpha()方法
判断是否为纯字母,是返回true,不是返回false
isdigit()方法
判断是否为纯数字,是返回true,不是返回false
isalnum()方法
判断是否包含数字或字母,是返回true,不是返回false
isspace()方法
判断是否是纯空白字符,是返回true,不是返回false
大小写判断
isupper()方法
判断是否全部为大写,是返回true,不是返回false
islower
判断是否全部为小写,是返回true,不是返回false
istitle()方法
判断首字母是否为大写,是返回true,不是返回false
开头/结尾判断
startswith()方法
语法:str.startswith(substr[,start= 0[,end=len(string)]])
str:检测的字符串
substr:指定的子字符串
start:设定字符串检测的起始位置
end:设定字符串检测的结束位置
判断字符串是否以子串开头
endwith()方法
语法与startswith相同
判断字符串是否以子串结尾
大小写转换
去除空白与填充
分割
指定的分隔符必须包含在字符串中否则没有实际意义。
替换
格式化字符串
转义字符
| 转义字符 | 描述 |
|---|---|
| (在行尾时) | 续行符 |
| \ | 反斜杠符号 |
| ' | 单引号 |
| " | 双引号 |
| \a | 响铃 |
| \b | 退格(Backspace) |
| \000 | 空 |
| \n | 换行 |
| \v | 纵向制表符 |
| \t | 横向制表符 |
| \r | 回车,将 \r 后面的内容移到字符串开头,并逐一替换开头部分的字符,直至将 \r 后面的内容完全替换完成。 |
| \f | 换页 |
| \yyy | 八进制数,y 代表 0~7 的字符,例如:\012 代表换行。 |
| \xyy | 十六进制数,以 \x 开头,y 代表的字符,例如:\x0a 代表换行 |
| \其他字符 | 其他字符以普通格式输出 |
字符串运算符
| 操作符 | 描述 |
|---|---|
| + | 字符串连接 |
| * | 重复输出字符串 |
| [] | 通过索引获取字符串中字符 |
| [ : ] | 截取字符串中的一部分,遵循左闭右开原则,str[0:2] 是不包含第 3 个字符的。 |
| in | 成员运算符 - 如果字符串中包含给定的字符返回 True |
| not in | 成员运算符 - 如果字符串中不包含给定的字符返回 True |
| r/R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 |
| ''''''或"""""" | 三引号,可以多行输出,也可以作为注释使用 |
使用%进行字符串格式化
| 符 号 | 描述 |
|---|---|
| %c | 格式化字符及其ASCII码 |
| %s | 格式化字符串 |
| %d | 格式化整数 |
| %u | 格式化无符号整型 |
| %o | 格式化无符号八进制数 |
| %x | 格式化无符号十六进制数 |
| %X | 格式化无符号十六进制数(大写) |
| %f | 格式化浮点数字,可指定小数点后的精度 |
| %e | 用科学计数法格式化浮点数 |
| %E | 作用同%e,用科学计数法格式化浮点数 |
| %g | %f和%e的简写 |
| %G | %f 和 %E 的简写 |
| %p | 用十六进制数格式化变量的地址 |
辅助指令
| 符号 | 功能 |
|---|---|
| * | 定义宽度或者小数点精度 |
| - | 用做左对齐 |
| + | 在正数前面显示加号( + ) |
| < sp > | 在正数前面显示空格 |
| # | 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') |
| 0 | 显示的数字前面填充'0'而不是默认的空格 |
| % | '%%'输出一个单一的'%' |
| (var) | 映射变量(字典参数) |
| m.n. | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
format
增强了格式化字符串的功能,基本语法使用{}和:代替%
| 数字 | 格式 | 输出 | 描述 |
|---|---|---|---|
| 3.1415926 | {:.2f} | 3.14 | 保留小数点后他们 |
| 3.1415926 | {:+.2f} | +3.14 | 带上符号保留小数点后他们 |
| -1 | {:-.2f} | -1.00 | 带上符号保留小数点后他们 |
| 2.71828 | {:.0f} | 3 | 不带小数 |
| 5 | {:0>2d} | 05 | 数字补零(填充左边,宽度为2) |
| 5 | {:x<4d} | 5xxx | 数字补x (填充右侧,宽度为4) |
| 10 | {:x<4d} | 10xx | 数字补x (填充右侧,宽度为4) |
| 1000000 | {:,} | 1,000,000 | 以分隔的数字格式 |
| 0.25 | {:.2%} | 25.00% | 百分比格式 |
| 1000000000 | {:.2e} | 1.00e+09 | 指数记法 |
| 13 | {:>10天} | 13 | 右宽度 (默认,宽度为10) |
| 13 | {:<10d} | 13 | 左纵 (宽度为10) |
| 13 | {:^10d} | 13 | 中间纵(宽度为10) |
b,d,o,x分别代表二进制、十进制、八进制、十六进制
{}可以用来转义{}
他们的参数不受限制,位置可以不按顺序。\
f-string
字面量格式化字符串。以f开头,后面跟字符串。字符串中的表达式用大括号{}包起来,会将变量和表达式计算后的值替换进去。
练习
定义一个字符串 s = "Hello, Python!",完成以下操作并输出结果:
- 取出前5个字符
- 将字符串全部转为大写
- 用 `"*"` 替换其中的 `"o"`
- 按空格分割字符串