1. Python 字符串切片详解:字符串截取原理与使用

简介: Python字符串支持索引与切片操作:正向索引从0开始,负向索引从-1起;用`str[i]`获取单字符,`str[start:end:step]`截取子串,各参数均可省略,默认步长为1。

从本质上讲,字符串是由多个字符构成的,字符之间是有顺序的,这个顺序号就称为索引(index)。Python 允许通过索引来操作字符串中的单个或者多个字符,比如获取指定索引处的字符,返回指定字符的索引值等。

获取单个字符

知道字符串名字以后,在方括号[ ]中使用索引即可访问对应的字符,具体的语法格式为:

strname[index]

strname 表示字符串名字,index 表示索引值。

Python 允许从字符串的两端使用索引:

  • 当以字符串的左端(字符串的开头)为起点时,索引是从 0 开始计数的;字符串的第一个字符的索引为 0,第二个字符的索引为 1,第三个字符串的索引为 2 ……

  • 当以字符串的右端(字符串的末尾)为起点时,索引是从 -1 开始计数的;字符串的倒数第一个字符的索引为 -1,倒数第二个字符的索引为 -2,倒数第三个字符的索引为 -3 ……

请看下面的实例演示:

url = 'http://c.biancheng.net/python/'
#获取索引为10的字符
print(url[10])
#获取索引为 6 的字符
print(url[-6])

运行结果:

i
y

获取多个字符(字符串截去/字符串切片)

使用[ ]除了可以获取单个字符外,还可以指定一个范围来获取多个字符,也就是一个子串或者片段,具体格式为:

strname[start : end : step]

对各个部分的说明:

  • strname:要截取的字符串;

  • start:表示要截取的第一个字符所在的索引(截取时包含该字符)。如果不指定,默认为 0,也就是从字符串的开头截取;

  • end:表示要截取的最后一个字符所在的索引(截取时不包含该字符)。如果不指定,默认为字符串的长度;

  • step:指的是从 start 索引处的字符开始,每 step 个距离获取一个字符,直至 end 索引出的字符。step 默认值为 1,当省略该值时,最后一个冒号也可以省略。

【实例1】基本用法:

url = 'http://c.biancheng.net/java/'
#获取索引从7处到22(不包含22)的子串
print(url[7: 22]) # 输出 zy
#获取索引从7处到-6的子串
print(url[7: -6]) # 输出 zyit.org is very
#获取索引从-21到6的子串
print(url[-21: -6])
#从索引3开始,每隔4个字符取出一个字符,直到索引22为止
print(url[3: 22: 4])

运行结果:

c.biancheng.net
c.biancheng.net
c.biancheng.net
pcaen

【实例2】高级用法,start、end、step 三个参数都可以省略:

url = 'http://c.biancheng.net/java/'
#获取从索引5开始,直到末尾的子串
print(url[7: ])
#获取从索引-21开始,直到末尾的子串
print(url[-21: ])
#从开头截取字符串,直到索引22为止
print(url[: 22])
#每隔3个字符取出一个字符
print(url[:: 3])

运行结果:

c.biancheng.net/java/
c.biancheng.net/java/
http://c.biancheng.net
hp/bne.ta/
相关文章
|
1天前
|
存储 程序员 C语言
1. Python 内置数据类型:整数 int 详解
Python整数(int)无类型区分,取值范围无限,自动支持大数运算,不溢出。支持十、二、八、十六进制(如0b101、0o26、0x45),Python 3.x还允许用下划线分隔数字(如1_000_000)提升可读性。
|
数据采集 机器学习/深度学习 算法
|
前端开发 Java C#
java/C#语言开发的医疗信息系统11套源码
java/C#语言开发的医疗信息系统11套源码
563 2
|
1天前
|
Python
1. Python 基础语法:pass 占位语句功能说明
本文介绍Python中`pass`空语句的用途:当代码逻辑需占位但暂不执行时,`pass`比`#TODO`注释更专业、更优雅。它明确表示“此处有意留空”,避免解释器报错,提升代码可读性与维护性。(239字)
|
1天前
|
数据可视化 物联网
RFID技术变革电力行业的仓储管理模式
RFID技术正推动电力仓储迈向智能数字化:5分钟极速盘点、出入库自动识别(准确率100%)、全生命周期“一物一码”追溯,显著提升效率与安全性,助力新型电力系统绿色高质量发展。(239字)
|
1天前
|
程序员 Python
Python 面向对象:class 类的定义与入门使用
本节讲解Python类的定义:使用`class`关键字,类名首字母大写;类由类头和缩进统一的类体(属性/方法)构成;支持文档字符串、空类(`pass`);区分类属性与实例属性,`self`为实例方法首个参数。
|
1天前
|
人工智能 IDE API
AI 编程智能体 Qoder CN 详解,产品线划分、Credits 定价规则、CLI 命令实战指南
整体来看,Qoder CN完成升级之后,已经从单纯的IDE代码补全插件进化为覆盖编码开发、办公自动化、数字员工的全栈AI智能体平台。多终端产品矩阵、丰富大模型基座选择、BYOK自带密钥、MCP工具扩展、Quest子智能体协同,满足从个人开发者到大型企业的不同诉求。订阅档位划分清晰,Credits跨产品共享降低多工具同时使用的成本。CLI命令行工具打通终端自动化链路,可以和现有开发流水线结合。开发者只要理清各版本功能差异、Credits互通规则,做好资源用量监控,合理配置MCP外部工具,就可以充分发挥这套产品的能力,大幅提升编码、办公任务的执行效率。
72 0
|
人工智能 缓存 监控
MCP工具开发实战:打造智能体的"超能力"
作为一名深耕AI技术领域多年的博主摘星,我深刻认识到工具(Tools)在现代智能体系统中的核心地位。在Anthropic推出的Model Context Protocol(MCP)框架下,工具不再是简单的功能模块,而是赋予AI智能体真正"超能力"的关键组件。通过深入研究MCP工具开发的各个层面,我发现这一技术正在重新定义人机交互的边界。MCP工具开发不仅仅是编写几个函数那么简单,它涉及复杂的参数验证机制、精密的错误处理策略、高效的异步调用模式,以及优雅的工具组合设计。在实际项目中,我见证了许多开发者因为缺乏对MCP工具设计原则的深入理解,导致开发出的工具要么性能低下,要么稳定性差,要么无法与其
840 0
MCP工具开发实战:打造智能体的"超能力"
|
存储 监控 网络协议
HarmonyOS NEXT实战:网络状态监控
本教程介绍如何在HarmonyOS Next中使用@ohos.net.connection模块实现网络状态监控,并通过AppStorage进行状态管理,适用于教育场景下的网络检测功能开发。
537 2
|
传感器 运维 安全
焊接机器人推荐:主流品牌解析与艾利特焊接机器人优势指南
焊接机器人已成为工业自动化的重要设备,广泛应用于汽车制造、新能源等领域。本文重点解析ABB、发那科、库卡、安川、艾利特等主流品牌的技术亮点,结合高精度、重负载、人机协作等场景,提供选型指南,助力企业高效匹配生产需求,提升焊接质量与效率。