截取字符串

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

由于字符串也属于序列,所以要截取字符串,可以采用切片方法实现。通过切片方法截取字符串的语法格式如下:

string[start : end : step]

参数说明:

l string:表示要截取的字符串。

l start:表示要截取的第一个字符的索引(包括该字符),如果不指定,则默认为0。

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

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

说明:字符串的索引同序列的索引是一样的,也是从0开始,并且每个字符占一个位置。如图4所示。

图4 字符串的索引示意图

例如,定义一个字符串,然后应用切片方法截取不同长度的子字符串,并输出,代码如下:

str1 = '人生苦短,我用Python!' # 定义字符串

substr1 = str1[1] # 截取第2个字符

substr2 = str1[5:] # 从第6个字符截取

substr3 = str1[:5] # 从左边开始截取5个字符

substr4 = str1[2:5] # 截取第3个到第5个字符

print('原字符串:',str1)

print(substr1 + '\n' + substr2 + '\n' + substr3 + '\n' + substr4)

上面的代码执行后,将显示以下内容:

原字符串: 人生苦短,我用Python!

我用Python!

人生苦短,

苦短,

注意:在进行字符串截取时,如果指定的索引不存在,则会抛出如图5所示的异常。

图5 指定的索引不存在时抛出的异常

要解决该问题,可以采用try...except语句捕获异常。例如,下面的代码在执行后将不抛出异常。

str1 = '人生苦短,我用Python!' # 定义字符串

try:

substr1 = str1[15] # 截取第15个字符

except IndexError:

print('指定的索引不存在')

场景模拟:一天,两名程序员又坐在一起聊天。程序员甲敲一下回车键,真的换行成功了。为此,对程序员乙很崇拜,于是想考考他。

实例02 截取身份证号码中的出生日期

在IDLE中创建一个名称为idcard.py的文件,然后在该文件中定义3个字符串变量,分别记录两名程序说的话,再从程序员甲说的身份证号中截取出出生日期,并组合成"YYYY年MM月DD日"格式的字符串,最后输出截取到的出生日期和生日,代码如下:

programer_1 = '你知道我的生日吗?' # 程序员甲问程序员乙的台词

print('程序员甲说:',programer_1) # 输出程序员甲的台词

programer_2 = '输入你的身份证号码。' # 程序员乙的台词

print('程序员乙说:',programer_2) # 输出程序员乙的台词

idcard = '123456199006277890' # 定义保存身份证号码的字符串

print('程序员甲说:',idcard) # 程序员甲说出身份证号码

birthday = idcard[6:10] + '年' + idcard[10:12] + '月' + idcard[12:14] + '日' # 截取生日

print('程序员乙说:','你是' + birthday + '出生的,所以你的生日是' + birthday[5:])

运行结果如图6所示。

图6 截取身份证号码中的出生日期

相关推荐
canonical_entropy4 分钟前
DDD本质论:从哲学到数学,再到工程实践的完整指南之实践篇
java·后端·领域驱动设计
Madison-No714 分钟前
【C++】探秘string的底层实现
开发语言·c++
_Power_Y14 分钟前
Java面试常用算法api速刷
java·算法·面试
艾醒(AiXing-w)15 分钟前
大模型面试题剖析:模型微调中冷启动与热启动的概念、阶段与实例解析
人工智能·深度学习·算法·语言模型·自然语言处理
纪莫16 分钟前
技术面:Spring (事务传播机制、事务失效的原因、BeanFactory和FactoryBean的关系)
java·spring·java面试⑧股
天选之女wow29 分钟前
【代码随想录算法训练营——Day32】动态规划——509.斐波那契数、70.爬楼梯、746.使用最小花费爬楼梯
算法·leetcode·动态规划
java1234_小锋32 分钟前
TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 神经网络基础原理
python·深度学习·tensorflow·tensorflow2
JJJJ_iii33 分钟前
【深度学习03】神经网络基本骨架、卷积、池化、非线性激活、线性层、搭建网络
网络·人工智能·pytorch·笔记·python·深度学习·神经网络
红衣小蛇妖37 分钟前
LeetCode-704-二分查找
java·算法·leetcode·职场和发展
!chen38 分钟前
【Spring Boot】自定义starter
java·数据库·spring boot