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

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

  • 具体内容
    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开始

负向索引

从-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!",完成以下操作并输出结果:

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

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

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

相关推荐
吴梓穆1 小时前
UE5 C++ 使C++创建动画蓝图
开发语言·c++·ue5
NotFound4861 小时前
分享实战中Python Web 框架对比:Django vs Flask vs FastAPI
前端·python·django
冰暮流星1 小时前
javascript之表单事件1
开发语言·前端·javascript
0xDevNull1 小时前
队列(Queue)实战教程:从原理到架构应用
java·开发语言·后端
ShineWinsu1 小时前
C++技术文章
开发语言·c++
再写一行代码就下班1 小时前
word模版导出(占位符方式)
java·开发语言·word
~无忧花开~2 小时前
CSS全攻略:从基础到实战技巧
开发语言·前端·css·学习·css3
tonydf2 小时前
日志模块该如何设计
后端·elasticsearch
BING_Algorithm2 小时前
JDBC核心教程
java·后端·mysql