当前位置: 首页 > news >正文

25. Python 字符串的切片方法

25. Python 字符串的切片方法

文章目录

  • 25. Python 字符串的切片方法
    • 1. 索引取值知识回顾
    • 2. 什么是切片
    • 3. 切片的语法
    • 4. 切片示例
      • 4.1 步长为1的切片取值
      • 4.2 步长为2的切片取值
      • 4.3 省略开始索引
      • 4.4 省略结束索引
      • 4.5 步长为-2
    • 5. 课堂练习
    • 6. 总结

1. 索引取值知识回顾

【索引取值语法】

字符串索引取值由3部分构成:

  1. 字符串变量名或者字符串本身。
  2. 英文中括号。
  3. 索引。

【代码示例】

# 将字符串ABCDEFG赋值给变量string 
string = 'ABCDEFG'

# 取字符串的第1个元素
# 变量名string ;英文中括号;索引为0
print(string [0])

【终端输出】

A

2. 什么是切片

索引取值可以从字符串中取出1个字符。

如果要从字符串中取出多个字符,可以用字符串的切片方法。

在这里插入图片描述

【备注】上述图片来自关东升的《看漫画学Python》。

3. 切片的语法

【语法】

字符串[star:end:step]

字符串[开始字符:结束字符:步长]

字符串切片取值由4部分构成:

  1. 字符串变量名或者字符串本身。

  2. 英文中括号。

  3. 3个参数。

  4. 3个参数之间用英文冒号分隔。

  5. 参数start:表示要取的第1字符的索引(包括该字符),如果不指定,则默认为0

  6. 参数end:表示要取的最后一个字符的索引(不包括该字符),如果不指定,则默认为字符串的长度。

  7. 参数step:表示切片的步长。如果省略,则默认为1,当省略该步长时,最后一个冒号也可以省略。

步长我的理解就是向前或向后走几步,可以是正整数,也可以是负整数。

步长为1,表示向前走1步,那就是依次取值。

步长为2,表示一次性向前走2步,那就是要跳过1个字符。

步长为-2,表示一次性向后退2步,即从右往左跳过1个字符。

【重点提示】切片取值时包括开始字符,不包括结束字符,简单记忆为含前不含后

4. 切片示例

4.1 步长为1的切片取值

# 将字符串"星河滚烫你是人间理想"赋值给变量a
a = "星河滚烫你是人间理想"

# 从第3个字符开始,第7个字符结束,步长为1
print(a[2:6:1])

【终端输出】

滚烫你是

在这里插入图片描述

【2:6:1代码解析】

start=2即开始字符的索引为2,索引2对应字符串的第3个元素,即字符

end=6即结束字符的索引为6,索引6对应字符串的第7个元素,即字符

step=1即字符串间隔为1,间隔为1表示向前走一步,中间不用跳过字符。

含前不含后即取前面的字符,不取后面的字符

因此取到的值为滚烫你是

【步长为1时可以省略不写】

# 将字符串"星河滚烫你是人间理想"赋值给变量a
a = "星河滚烫你是人间理想"

# 从第3个字符开始,第7个字符结束,步长为1
print(a[2:6])

【终端输出】

滚烫你是

上述代码省略了步长,因此默认步长为1。

【温馨提示】当省略步长时,最后一个冒号也可以省略。

4.2 步长为2的切片取值

# 将字符串"星河滚烫你是人间理想"赋值给变量a
a = "星河滚烫你是人间理想"

# 从第3个字符开始,第7个字符结束,步长为2
print(a[2:6:2])

【终端输出】

滚你

在这里插入图片描述

【2:6:2代码解析】

start=2即开始字符的索引为2,索引2对应字符串的第3个元素,即字符

end=6即结束字符的索引为6,索引6对应字符串的第7个元素,即字符

step=2即字符串间隔为2,间隔为2表示一次性往前走2步,取值时跳过1个字符。

含前不含后即取前面的字符,不取后面的字符

因此取到的值为滚你

4.3 省略开始索引

# 将字符串"星河滚烫你是人间理想"赋值给变量a
a = "星河滚烫你是人间理想"

# 默认索引从0开始
print(a[:6])

【终端输出】

星河滚烫你是

在这里插入图片描述

【:6代码解析】

冒号前没有数字,表示省略开始索引。
数字6后面没有冒号和数字,表示省略步长。

start=0,没有开始索引,索引默认从0开始,索引0对应的字符串的第1个字符,即字符

end=6即结束字符的索引为6,索引6对应字符串的第7个元素,即字符

step=1即字符串间隔为1,间隔为1表示向前走一步,中间不用跳过字符。

含前不含后即取前面的字符,不取后面的字符

因此取到的值为星河滚烫你是

4.4 省略结束索引

# 将字符串"星河滚烫你是人间理想"赋值给变量a
a = "星河滚烫你是人间理想"

# 没有结束索引,默认到整个字符串结尾
print(a[6:])

【终端输出】

人间理想

【6:代码解析】

冒号后面没有数字表示省略结束索引,默认步长为1。

在这里插入图片描述

start=6即开始字符的索引为6,索引6对应字符串的第7个元素,即字符

end:如果不指定,则默认为整个字符串的长度。

step=1即字符串间隔为1,间隔为1表示向前走一步,中间不用跳过字符。

【温馨提示】结束索引默认的情况下可以取到字符串的最后一个字符。

因此取到的值为人间理想

4.5 步长为-2

# 将字符串"星河滚烫你是人间理想"赋值给变量a
a = "星河滚烫你是人间理想"

# 从倒数第2个字符开始,到正数第3个字符结束;步长为-2
print(a[-2:2:-2])

【终端输出】

理人你

在这里插入图片描述

【-2:2:-2代码解析】

start=-2即开始字符的索引为-2,索引-2对应字符串的倒数第2个元素,即字符

end=2即结束字符的索引为2,索引2对应字符串的第3个元素,即字符

step=-2即字符串间隔为-2,间隔为-2表示一次性往后退2步,取值时跳过1个字符。

步长为负数表示从右往左走。

因此取到的值为理人你

5. 课堂练习

【练习1】

中国居民身份证号码中的前2位数字代表省份。
取出代表省份的前2位数。

# 将身份证号码赋值给变量id_card 
id_card = "533001199901013029"

# 方法1:开始索引为0,结束索引为2,取字符串的第1和第2个字符
print(id_card[0:2])

# 方法2:开始索引为0可以不写
print(id_card[:2])

【终端输出】

53
53

【练习2】

取出身份证号码中的出生年月日。

在这里插入图片描述

# 将身份证号码赋值给变量id_card 
id_card = "533001199901013029"

# 方法1:开始索引为6,结束索引为14
print(id_card[6:14])

# 方法1:开始索引为-12,结束索引为-4
print(id_card[-12:-4])

【终端输出】

19990101
19990101

6. 总结

在这里插入图片描述

【取值技巧】

前加1,后不变

前加1,后不变

前加1,后不变

【例如】

【0:2】表示取第1个到第2个字符。

【1:5】表示取第2个到第5个字符。

在这里插入图片描述

相关文章:

  • 接口测试自动化脚本框架4
  • HadoopSpark
  • 51单片机4位抢答器_倒计时可调仿真设计
  • 设计模式之模板方法模式的理解
  • 小型功率放大器的设计与制作——功率放大器电路总结
  • 接口测试自动化脚本框架5
  • Elasticsearch ik分词器的安装和使用
  • 【Spring Authorization Server 系列】(四)JWS 的签名方式
  • Vue中的循环渲染v-for
  • openresty + prometheus + grafana 搭建。监控网络请求
  • 复盘:统计学派(频率学派)跟贝叶斯学派(贝叶斯公式、朴素贝叶斯)的定义和区别,奥卡姆剃刀和最大似然跟谁更接近
  • Java数据类型与变量
  • od笔试记录
  • Code Review
  • Kubernetes部署服务通过Ingress访问报错413解决
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Angular2开发踩坑系列-生产环境编译
  • CSS 三角实现
  • css的样式优先级
  • HTTP中的ETag在移动客户端的应用
  • input实现文字超出省略号功能
  • JavaScript的使用你知道几种?(上)
  • k个最大的数及变种小结
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Python十分钟制作属于你自己的个性logo
  • 阿里云Kubernetes容器服务上体验Knative
  • 创建一种深思熟虑的文化
  • 前嗅ForeSpider中数据浏览界面介绍
  • 悄悄地说一个bug
  • 区块链技术特点之去中心化特性
  • 中文输入法与React文本输入框的问题与解决方案
  • Android开发者必备:推荐一款助力开发的开源APP
  • 带你开发类似Pokemon Go的AR游戏
  • ​Spring Boot 分片上传文件
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (翻译)terry crowley: 写给程序员
  • (译)2019年前端性能优化清单 — 下篇
  • (转)3D模板阴影原理
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • (轉貼) UML中文FAQ (OO) (UML)
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET 中的轻量级线程安全
  • .Net6 Api Swagger配置
  • [ IO.File ] FileSystemWatcher
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)
  • [C#] 我的log4net使用手册
  • [C++] 默认构造函数、参数化构造函数、拷贝构造函数、移动构造函数及其使用案例
  • [cocos creator]EditBox,editing-return事件,清空输入框
  • [datastore@cyberfear.com].Elbie、[thekeyishere@cock.li].Elbie勒索病毒数据怎么处理|数据解密恢复
  • [GN] 设计模式——面向对象设计原则概述