你是否曾经被路径里疯狂的反斜杠逼疯是否在IndexError: string index out of range面前手足无措用%格式化太老土format()模板又太啰嗦f-string到底是什么时候偷偷变香的字符串看似简单实则暗藏各种“咬手”的细节。今天这篇文章我帮你把 Python 字符串的定义、转义、格式化、索引、切片、遍历、常用方法七大核心技能一次性讲透让你从此跟字符处理的噩梦说再见。 目录字符串的定义转义字符与原始字符串字符串格式化方法索引精准定位每一个字符切片截取的魔法遍历字符串的三种姿势常用方法汇总与实战总结与思考1. 字符串的定义Python 中字符串是由单引号、双引号或三引号包裹的不可变序列。pythons1 hello s2 world s3 这是一个 多行字符串 s4 同样支持 多行使用建议字符串内包含单引号时外侧用双引号包裹反之亦然避免多余转义。多行文本、函数文档字符串docstring统一使用三引号。字符串不可变任何“修改”操作都会产生新字符串。2. 转义字符与原始字符串2.1 常见转义字符转义序列含义\n换行\t制表符\\反斜杠本身\单引号\双引号\r回车\uXXXXUnicode 16位\UXXXXXXXXUnicode 32位pythonpath C:\\Users\\new_folder # 需要双反斜杠 print(path) # C:\Users\new_folder2.2 原始字符串r...在正则、文件路径等场景反斜杠泛滥令人抓狂。原始字符串忽略转义仅将\视为普通字符。pythonpath rC:\Users\new_folder print(path) # C:\Users\new_folder 清爽⚠️ 原始字符串结尾不能是单个反斜杠如rabc\会报错需要写成rabc\\。3. 字符串格式化方法Python 格式化经历了三个阶段现在主流写法是f-string。3.1%格式化旧式pythonname Alice age 25 print(我叫%s今年%d岁 % (name, age))缺点类型必须匹配多个变量时括号容易漏可读性差。3.2str.format()pythonprint(我叫{}今年{}岁.format(name, age)) print(我叫{0}今年{1}岁{0}很开心.format(name, age)) # 可重复引用 print(我叫{n}今年{a}岁.format(nBob, a30)) # 关键字参数优点可读性好支持索引、关键字支持格式规范如{:.2f}。缺点模板和参数分离变量多时仍然冗长。3.3 f-string Python 3.6强烈推荐pythonprint(f我叫{name}今年{age}岁明年{age1}岁) # 表达式直接嵌入支持函数调用 print(f名字长度{len(name)}) # 格式控制保留两位小数 pi 3.1415926 print(fpi ≈ {pi:.2f})优势语法简洁、执行最快、可内嵌任意表达式。现代 Python 代码请无脑首选 f-string。4. 索引字符串是字符的有序序列每个字符都有位置编号从0开始。也支持负数索引-1表示最后一个字符。pythons Python print(s[0]) # P print(s[5]) # n print(s[-1]) # n print(s[-6]) # P正负索引对照表字符Python正索引012345负索引-6-5-4-3-2-1 索引越界会抛出IndexError使用前可通过len(s)判断或捕获异常。5. 切片切片是 Python 字符串操作的精髓语法[start:stop:step]左闭右开即包含 start不包含 stop。pythons Python print(s[0:3]) # Pyt 索引0到2 print(s[:3]) # Pyt 省略start默认从0开始 print(s[3:]) # hon 省略stop默认到末尾 print(s[:]) # Python 完整拷贝 print(s[::2]) # Pto 步长为2 print(s[::-1]) # nohtyP 步长为负反向字符串避坑指南s[3:1]返回空字符串不会报错start stop 且步长为正时。s[-1:-4:-1]才能得到noh反转切片时注意 start 和 stop 的位置。切片是浅拷贝返回新字符串不改变原串。6. 遍历字符串6.1 直接遍历字符pythonfor ch in Hello: print(ch)6.2 利用索引遍历需要下标时pythons 世界 for i in range(len(s)): print(f索引{i}: {s[i]})6.3enumerate()同时获取索引与字符pythonfor idx, ch in enumerate(abc): print(idx, ch) # 输出 # 0 a # 1 b # 2 c推荐优先使用enumerate()代码简洁且 Pythonic。7. 常用方法汇总Python 字符串方法极为丰富按功能分类记忆最有效率。 大小写转换方法说明示例upper()全部大写hello.upper()→HELLOlower()全部小写HELLO.lower()→hellocapitalize()首字母大写其余小写hello WORLD.capitalize()→Hello worldtitle()每个单词首字母大写hello world.title()→Hello Worldswapcase()大小写反转AbC.swapcase()→aBc 查找与替换方法说明find(sub, start, end)返回子串最低索引找不到返回 -1rfind(sub)从右侧查找index(sub)类似 find但找不到会报ValueErrorrindex(sub)右侧版本count(sub)统计子串出现次数replace(old, new, count)替换count 指定替换次数pythons hello world, hello python print(s.find(hello)) # 0 print(s.rfind(hello)) # 13 print(s.count(hello)) # 2 print(s.replace(hello, hi, 1)) # hi world, hello python✅ 判断方法返回布尔值startswith(prefix)/endswith(suffix)isalpha()是否全为字母isdigit()是否全为数字isalnum()是否字母或数字isspace()是否全为空白字符islower()/isupper()/istitle() 拆分与连接方法说明split(sep, maxsplit)按分隔符分割成列表默认按空白rsplit()从右侧分割splitlines(keepends)按换行符分割join(iterable)用字符串连接可迭代对象中的字符串partition(sep)分成三部分(前, 分隔符, 后)rpartition()从右侧切分pythonapple,banana,orange.split(,) # [apple, banana, orange] -.join([2025, 01, 01]) # 2025-01-01 hello world.partition( ) # (hello, , world)✂️ 去除空白/字符strip(chars)去除两端指定字符默认空白lstrip()去除左侧rstrip()去除右侧python hi .strip() # hi xxhelloxx.strip(x) # hello 对齐与填充center(width, fillchar)ljust(width, fillchar)rjust(width, fillchar)zfill(width)左侧填充 0python42.zfill(5) # 00042 hello.center(11, *) # ***hello*** 编码与解码encode(encodingutf-8)字符串→字节bytes.decode(encodingutf-8)字节→字符串 字符串常量string 模块pythonimport string string.ascii_letters # 所有字母 string.digits # 数字 string.punctuation # 标点符号 总结与思考字符串是不可变类型任何“修改”操作都会产生新对象频繁拼接如循环内会造成性能问题建议使用.join(list)优化。格式化首选 f-string它不仅可读性最佳执行效率也远超%和format()。切片是零成本副本善用[::-1]反转字符串注意左闭右开规则避免 off-by-one 错误。方法链可以让代码更优雅例如s.strip().lower().replace( , _)但要注意中间结果仍为字符串不会修改原变量。处理大量文本时正则表达式re模块是字符串方法的有力补充但简单的查找、替换应优先使用方法。字符串是编程世界的原子单位掌握它你就掌控了数据的入口与出口。希望这篇汇总能成为你桌面上的“字符串速查手册”。如果觉得有帮助不妨点赞、收藏、转发让更多开发者少踩坑有任何问题欢迎评论区交流讨论。
企业数字化 ERP 产品动态
相关推荐
现代C++并行编程利器:Taskflow任务流框架深度解析与实践指南 1. 项目概述:为什么现代C需要Taskflow?如果你用C写过稍微复杂点的程序,尤其是涉及到计算密集型任务或者需要处理大量异步I/O的场景,大概率会头疼过线程管理。手动创建std::thread,小心翼翼地设计锁和条件变量ÿ… · 2026/9/16 15:29:30
轻盈美学机构合作:资质完整的品牌怎么选才靠谱 在轻医美和院线护肤领域,“轻盈美学”正从一种审美理念,逐步演化为机构项目设计的重要方向。它强调自然、原生、不过度干预的护理逻辑,贴合当下求美者更理性的需求。但对B端决策者来说,一个现实问题也随之而来:当一个机… · 2026/9/16 2:46:31
别再乱买seo优化推广软件了这3个最佳实践省一半钱 别再乱买seo优化推广软件了这3个最佳实践省一半钱 改个需求建站公司拖一周,这是多少中小老板的噩梦?你急得抓耳挠腮,对方却在群里回个“正在处理”,这种被动等待的日子,靠花钱买所谓的“seo优化推广软件”能解决吗?别天真了。软件只是工具,不懂… · 2026/9/27 14:34:42
网站一直百度上搜不到是怎么回事:3个排查步骤+对比评测 网站一直百度上搜不到是怎么回事:3个排查步骤+对比评测 刚把新站丢到百度里搜,半天没动静?别急,先看看是不是备案流程卡住了,或者服务器配置出了岔子。我见过太多新手因为搞不清备案流程一头雾水,导致网站权重被降,这时候盲目做SEO全是无用功。今… · 2026/9/27 14:34:30
湖北建设网站信息查询中心从零搭建:搞定备案不迷路 湖北建设网站信息查询中心从零搭建:搞定备案不迷路 第一次接到“湖北建设网站信息查询中心”这个需求时,我脑子里蹦出的第一个念头不是技术多难,而是 备案流程一头雾水… · 2026/9/27 14:34:30
织梦网站模板怎么做完整流程含安全加固实战 织梦网站模板怎么做完整流程含安全加固实战 域名服务器搞不懂,是很多新手接手织梦(DedeCMS)项目时最头疼的坑。你以为买了个便宜模板,上传就能用,结果后台打不开、前台报错,甚至被黑客植入了暗链,这时候才意识到: 织梦网站模板怎么做… · 2026/9/27 14:34:23
wordpress头部工具栏优化5大注意事项与源码解析 wordpress头部工具栏优化5大注意事项与源码解析 刚接到个急活,客户急着上线外贸站,结果后台一打开,那个熟悉的灰色条状物——WordPress 默认头部工具栏(Admin… · 2026/9/27 14:33:57
网站开发与建设主要干什么?揭秘费用明细与免费工具避坑指南 网站开发与建设主要干什么?揭秘费用明细与免费工具避坑指南 网站做好了没人访问,这是90%企业老板上线后最头疼的噩梦。别急着怪算法,先看看你手里的钱是不是花错了地方。很多甲方拿着预算单,心里没底,不知道 网站开发与建设主要干什么… · 2026/9/27 14:33:57
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01