第5天:Python字符串操作进阶

0 阅读7分钟

学习目标:掌握字符串的常用操作,如索引、切片、拼接、格式化、常用方法。

  • 具体内容
    1. 字符串索引和切片:s[0], s[-1], s[1:4] 等。
    2. 字符串拼接:使用 +join 方法。
    3. 字符串常用方法:
      • len() 获取长度
      • lower() / upper() 大小写转换
      • strip() 去除空白
      • split() 分割
      • replace() 替换
      • find() / index() 查找
      • startswith() / endswith() 判断开头结尾
    4. 字符串格式化复习(f-string重点)。
  • 练习任务
    • 定义一个字符串 s = "Hello, Python!",完成以下操作并输出结果:
      • 取出前5个字符
      • 将字符串全部转为大写
      • "*" 替换其中的 "o"
      • 按空格分割字符串
    • 让用户输入一个句子,统计其中有多少个单词(按空格分割)。
  • 小挑战:实现一个简单的用户名处理程序:输入全名(如 "John Doe"),输出姓氏和名字的首字母大写形式(如 "John D.")。

字符串索引

正向索引

从零开始,依次递增

字符串str='dskj'中正向索引从0开始

image.png

负向索引

从-1开始,依次递减。负向索引从-1开始递减

image.png

越界操作

当字符串本身没有那么多字符,而要求输出很多字符时,会出现越界的情况。自动情况下会自动截断,主动使用造成的越界会造成error

image.png

切片

字符串切片通过str[strat:stop:step]获取切片后的子序列,遵循左闭右开的原则 start:开始索引 stop:结束索引 step:步长(正数从左到右,负数从右到左)。默认为1,为负数时start与stop互换,否则为空值

image.png

越界保护

当切片索引越界时,会自动截断,不会自动报错。

image.png

字符串拼接

‘+’加号

image.png

join()方法

高效连接可以迭代的对象中的多个字符串,是处理大量字符串的首选方法。

image.png

字符串常用方法

查找

len()方法

获取字符串的长度

image.png

count()方法

语法:str.count(sub, start= 0,end=len(string))
sub:要统计的子串
start:开始的索引位置
end:结束的索引位置
统计子串出现的次数 image.png

find()方法

语法:str.find(str, beg=0, end=len(string))
查找子串,返回索引(不存在返回-1)

image.png

index()方法

语法与find()方法相同
查找子串,不存在时会报错

image.png

判断

类型判断

isalpha()方法

判断是否为纯字母,是返回true,不是返回false

image.png

isdigit()方法

判断是否为纯数字,是返回true,不是返回false

image.png

isalnum()方法

判断是否包含数字或字母,是返回true,不是返回false

image.png

isspace()方法

判断是否是纯空白字符,是返回true,不是返回false

image.png

大小写判断

isupper()方法

判断是否全部为大写,是返回true,不是返回false

image.png

islower

判断是否全部为小写,是返回true,不是返回false

image.png

istitle()方法

判断首字母是否为大写,是返回true,不是返回false

image.png

开头/结尾判断

startswith()方法

语法:str.startswith(substr[,start= 0[,end=len(string)]])
str:检测的字符串
substr:指定的子字符串
start:设定字符串检测的起始位置
end:设定字符串检测的结束位置
判断字符串是否以子串开头

image.png

endwith()方法

语法与startswith相同
判断字符串是否以子串结尾

image.png

大小写转换

image.png

去除空白与填充

image.png

分割

指定的分隔符必须包含在字符串中否则没有实际意义。 image.png

替换

image.png

格式化字符串

转义字符

转义字符描述
(在行尾时)续行符
\反斜杠符号
'单引号
"双引号
\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 是小数点后的位数(如果可用的话)

image.png

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分别代表二进制、十进制、八进制、十六进制
{}可以用来转义{}
他们的参数不受限制,位置可以不按顺序。\

image.png

f-string

字面量格式化字符串。以f开头,后面跟字符串。字符串中的表达式用大括号{}包起来,会将变量和表达式计算后的值替换进去。

image.png

练习

定义一个字符串 s = "Hello, Python!",完成以下操作并输出结果:

- 取出前5个字符
- 将字符串全部转为大写
-`"*"` 替换其中的 `"o"`
- 按空格分割字符串

image.png

让用户输入一个句子,统计其中有多少个单词(按空格分割)。

image.png

实现一个简单的用户名处理程序:输入全名(如 "John Doe"),输出姓氏和名字的首字母大写形式(如 "John D.")。

image.png