python中截取字符串方法_切片、split、正则与partition全面解析

字符串切片:[start:end:step] 是最常用也最容易出错的方式

切片不是函数,是 Python 字符串的内置语法,但很多人误以为 str[0:5] 会包含第 5 个字符——其实 end 是**不包含**的。负索引、越界、空切片都按静默规则处理,不会报错。

  • s = "hello"s[1:100] 返回 "ello"(自动截断到末尾)
  • s[-3:-1] 返回 "ll"(负索引从右往左数,-1 是最后一个字符,不包含)
  • s[3:1] 返回空字符串 ""(start ≥ end 时直接返回空)
  • 省略 startend 会取默认边界:s[:3] 等价于 s[0:3]s[2:] 从索引 2 到末尾

str.split() 按分隔符拆分,但默认行为和空格处理常被忽略

split() 不传参数时,会以任意空白字符(空格、\t、\n、\r)为界,并**自动合并连续空白**,且**前后空白会被忽略**。这和按 ' ' 显式分割完全不同。

  • "a b\t\n c".split()['a', 'b', 'c'](三段非空内容)
  • "a b\t\n c".split(' ')['a', '', 'b\t\n', 'c'](按字面空格切,保留空项)
  • 指定 maxsplit=1 可控制最多切几刀:"a:b:c".split(':', 1)['a', 'b:c']
  • 如果分隔符不存在,split() 返回原字符串组成的单元素列表:"abc".split('|')['abc']

正则 re.split()re.findall() 适合复杂模式,但性能与贪婪性需留意

当分隔逻辑含“多个空格”“数字+字母混合边界”或“括号嵌套”时,split() 就不够用了。正则能表达语义,但要注意:默认 re.split() 会丢弃匹配到的分隔符;而 re.findall() 更适合提取目标片段而非切分。

  • re.split(r'\s+', "a b\tc")['a', 'b', 'c'](等效于 split() 默认行为,但可控)
  • 用捕获组 () 可保留分隔符:re.split(r'(\.)', "a.b.c")['a', '.', 'b', '.', 'c']
  • re.findall(r'\d+', "x12y34z")['12', '34'](提取所有连续数字,比先 split() 再过滤更直接)
  • 避免过度贪婪:re.findall(r'a.*b', 'a1b2a3b') 匹配整个 'a1b2a3b',改用 r'a.*?b' 得到两个结果

str.partition()str.rpartition() 专为“找第一个/最后一个分隔符”设计

这两个方法返回三元组 (before, sep, after),比 split(sep, 1) 更明确、更安全——即使分隔符不存在,也保证返回三个元素,不会索引错误。

达芬奇

达芬奇——你的AI创作大师

下载

立即学习“Python免费学习笔记(深入)”;

  • "hello-world.py".partition('.') → ('hello-world', '.', 'py')
  • "file".partition('.') → ('file', '', '')(后两元素为空,不会抛 IndexError
  • "a/b/c".rpartition('/') → ('a/b', '/', 'c')(只看最后一次出现)
  • 相比 split('.', 1)[0]partition() 不需要异常处理或长度判断,语义更清晰

真正难的不是记住哪几种方法,而是遇到一个具体字符串要截取时,得立刻判断:这是固定位置?有明确分隔符?还是带语义的模式?选错方法会导致后续逻辑补丁越来越多。比如用 split(' ') 处理用户输入的姓名字段,遇到中间多空格就崩;用切片硬写 s[0:s.find(':')] 却忘了 find() 找不到返回 -1 ——这些都不是“不会”,而是没想清楚边界怎么定义。

相关推荐:

Excel怎么快速提取括号里的文字 字符截取函数使用技巧

用MID+SEARCH提取首对中文括号内容,TEXTBEFORE与TEXTAFTER提取首对英文括号内容,Power Query拆分多对括号,FILTERXML(仅Windows)提取全部括号内容。 你需要从Excel单元格中快速提取括号里的文字,比如“张三(销售部)(高级专员)”要得到“销售部”或全部括号内容,而不是手动复制粘贴或靠Ctrl+E碰运气——后者在括号位置不固定、数量不一致时必然失败...

Safari浏览器快速备忘录截取网页高亮链接笔记同步怎么用_Safari浏览器侧边栏快捷收集

可通过三种方式将 Safari 当前页面高亮内容保存为结构化笔记并同步至侧边栏“快速备忘录”:一、拖拽智能搜索栏 URL 至侧边栏;二、选中文本后拖入侧边栏;三、右键点击链接或图片选择“添加到快速备忘录”。 如果您在 Safari 浏览器中浏览网页时希望快速将当前页面的高亮内容(如选中文本或链接)保存为结构化笔记,并同步至侧边栏“快速备忘录”,可借助 Safari 原生支持的拖放联动、智能选择与侧...

三星S21 Ultra如何长截屏 三星手机截取长图操作步骤

三星S21 Ultra长截图需启用滚动截屏功能,支持五种路径:一、按键截图后3秒内点击缩略图→选“滚动截屏”;二、开启手掌滑动截屏后滑动→编辑页启动滚动;三、通知栏长按“截屏”图标直达滚动模式;四、S Pen拔出调出Air Command→选“截取长图”;五、Good Lock绑定双击Bixby键等手势盲操启动。 如果您在三星S21 Ultra上需要截取网页、聊天记录或文档等超出一屏范围的内容,则...

火狐浏览器怎么使用控制台截取整个网页的长截图_火狐浏览器开发者工具隐藏指令

最稳定截取整页长图的方式是开发者工具命令行执行 screenshot --fullpage,无需插件或可见图标,适合自动化或界面异常时兜底;该指令为 Firefox 内置隐藏命令,需通过 Ctrl+Shift+P 呼出命令面板输入并选择执行,自动滚动捕获拼接后直接下载 PNG。 直接用开发者工具命令行执行 screenshot --fullpage 就能截取整页长图,不需要装插件、也不依赖工具栏图...

QoderWake正则搜索配置技巧:大规模重构代码必备

QoderWake高精度正则搜索需适配工程上下文并启用语义增强:一、区分search()(全局扫描)与match()(行首严格匹配);二、注入语言感知边界规避注释/字符串误匹配;三、采用多阶段工具链粗筛→精滤;四、启用MCP跨源联动扩展搜索边界。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 如果您在使用 QoderWake 进行大规模代码...

想要网页长截图_Alook浏览器截取完整网页操作【技巧】

Alook浏览器截取网页长图需用特定方法:一、上下文菜单选“整页截图”;二、开发者工具执行Capture full size screenshot;三、安装GoFullPage适配版扩展;四、打印为PDF再转图像;五、iOS端三指下滑手势。 如果您在Alook浏览器中尝试截取网页长图,但仅获得当前可视区域画面,则可能是由于该浏览器未内置滚动截图功能或操作路径未匹配其专属机制。以下是解决此问题的步骤...

Safari浏览器怎么使用快速备忘录截取网页高亮链接_Safari浏览器侧边栏笔记同步

Safari中快速截取网页链接并高亮同步至侧边栏备忘录,需通过Fn+Q唤出浮层、Control+右键选文添加、拖拽地址栏图标,或检查iCloud备忘录与Safari同步权限。 如果您在 Safari 浏览器中浏览网页时希望快速截取当前页面链接并高亮保存至侧边栏备忘录,但发现链接未自动捕获、高亮失效或无法与侧边栏笔记同步,则可能是由于快捷操作未触发、备忘录权限未启用、iCloud 同步未开启或侧边栏...

Safari浏览器怎么使用快速备忘录截取网页的高亮链接与文本_Safari浏览器侧边栏笔记云端无缝同步

可实现Safari高亮链接与选中文本快速截取并同步至侧边栏备忘录:一、Fn+Q唤出浮层插入链接与文本;二、Control+右键直添;三、拖拽URL与文本至侧边栏;四、启用Safari扩展深度集成;五、强制iCloud同步确保侧边栏实时更新。 如果您在 Safari 浏览器中浏览网页时希望快速截取当前页面的高亮链接与选中文本,并同步至侧边栏备忘录,但发现内容未捕获、格式错乱或无法联动 iCloud ...