Python 字符串操作详解

发布时间:2026/8/4 15:00:57
Python 字符串操作详解 目录一、字符串基础定义与书写规范1. 单行字符串2. 多行字符串3. 转义字符 \二、字符串基础操作符1. 拼接与复制2. 成员判断 in / not in3. 字符串大小比较三、字符串索引与切片1. 索引访问 [下标]2. 切片语法 [N:M:step]四、字符串内置通用函数五、字符串专属处理方法代码示例六、综合实操练习1 数字转中文数字练习2 数字转星期练习3 文本清洗七、字符串格式化输出1. 使用 % 运算符的旧式格式化2. 使用 str.format() 方法3. 使用 f-stringPython 3.6三种方式对比总结八、本章总结上一章我们完整学习了 Python 全部数字类型与各类数值运算符掌握了整数、浮点数、复数的定义、混合运算规则与内置数学函数能够完成所有数值计算类代码。本章将聚焦编程中使用频率最高的数据类型——字符串系统讲解字符串定义、转义字符、索引切片、操作符、内置函数与常用处理方法。一、字符串基础定义与书写规范字符串是用于承载文本内容的数据类型支持汉字、字母、数字、符号、空格等所有可见字符是文本处理、日志输出、接口交互、文件读写的核心载体。1. 单行字符串使用成对单引号 或双引号 包裹文本两种写法功能完全一致。交叉引号技巧如果文本内部包含单引号外层使用双引号内部包含双引号外层使用单引号无需额外转义。# 演示单引号与双引号定义字符串的等价性 s1 He says:Python is useful s2 今天学习字符串操作 print(s1) print(s2) # 输出结果 # He says:Python is useful # 今天学习字符串操作2. 多行字符串使用三单引号 或三双引号 定义天然支持换行无需换行转义符适合存储诗词、长段落、代码注释、完整文本块。# 演示三引号定义多行字符串并原样输出 poem 滚滚长江东逝水浪花淘尽英雄。 是非成败转头空。 青山依旧在几度夕阳红。 print(poem) # 输出结果 # # 滚滚长江东逝水浪花淘尽英雄。 # 是非成败转头空。 # 青山依旧在几度夕阳红。 #补充拓展原始字符串处理文件路径、正则表达式时经常出现转义冲突可以在字符串引号前添加r定义原始字符串内部所有反斜杠不再被识别为转义符。# 演示原始字符串 r 前缀避免路径转义冲突 path rD:\code\python_demo print(path) # 输出结果 # D:\code\python_demo3. 转义字符\反斜杠\作为转义标识用来输出特殊不可见字符、引号、反斜杠本身常用转义符转义符作用\n换行\tTab制表空格\输出单引号\输出双引号\\输出反斜杠# 演示转义字符 \t 和 \ 的使用 print(爱\t生活\t爱\tPython) print(文本里包含单引号\和双引号) # 输出结果 # 爱 生活 爱 Python # 文本里包含单引号和双引号二、字符串基础操作符1. 拼接与复制拼接两个字符串只能字符串之间相加不能直接和数字拼接* n将字符串重复复制n次输出# 演示字符串拼接 与复制 * 操作符 s1 Hello s2 World print(s1 s2) print(s1 * 3) # 输出结果 # HelloWorld # HelloHelloHello2. 成员判断in / not in判断一段子串是否存在于目标字符串返回布尔值True / False# 演示 in 与 not in 判断子串是否存在 text Python编程学习 print(Python in text) print(Java not in text) # 输出结果 # True # True3. 字符串大小比较字符串按照字符对应的Unicode编码值从左到右逐位对比支持 !全部比较运算符。补充规则大写字母编码小于小写字母数字编码小于英文字母。# 演示字符串按Unicode编码逐位比较 print(Python python) # False大写P编码更小 print(123 123) # True print(abc abcd) # 短字符串匹配完成后更小 # 输出结果 # False # True # True三、字符串索引与切片字符串属于序列类型每个字符拥有独立位置编号分为正向索引、反向索引搭配切片语法可以自由截取任意片段。1. 索引访问[下标]正向索引从左至右从0开始计数反向索引从右至左从-1开始计数# 演示正向索引与反向索引访问字符 s 世界那么大我想去看看 print(s[2]) # 正向索引输出“那” print(s[-6]) # 反向索引 # 输出结果 # 那 # 想2. 切片语法[N:M:step]语法规则[起始下标:结束下标:步长]左闭右开包含起始位置不包含结束位置省略N默认从0开始省略M默认截取到末尾省略step步长为1步长为负数时实现倒序截取# 演示切片语法 [N:M:step] 的多种截取方式 s Python 语言程序设计 print(s[2:-4]) print(s[:6]) # 从头截取到下标6之前 print(s[6:]) # 从下标6截取到末尾 print(s[::-1]) # 完整倒序字符串 # 输出结果 # thon 语言程 # Python # 语言程序设计 # 计设序程言语 nohtyP实操小案例倒序输出文本# 演示利用切片实现文本倒序输出 content input(请输入一段文字) print(content[::-1]) # 输出结果 # 输入你好世界输出界世好你四、字符串内置通用函数这类函数独立调用不依附字符串变量支持所有序列、基础数据类型。函数功能说明len(x)获取字符串总字符长度str(x)将任意数据转为字符串格式ord(x)单个字符转为对应Unicode编码数字chr(x)Unicode数字转回对应字符hex()/oct()数字转十六、八进制字符串# 演示字符串内置通用函数 len/ord/chr/hex/oct text 全国计算机等级考试Python print(len(text)) # 输出结果14 print(ord(a)) # 输出结果97 print(chr(98)) # 输出结果b # hex() / oct() 示例 num 255 print(hex(num)) # 输出结果0xff print(oct(num)) # 输出结果0o377五、字符串专属处理方法调用格式字符串变量.方法名(参数)执行后返回新字符串不会修改原字符串字符串不可变特性补充重点知识点字符串创建后无法原地修改所有操作均生成副本方法功能upper()全部字母转为大写lower()全部字母转为小写split(sep)按照分隔符切割返回列表无参数默认按空格分割count(sub)统计子串出现总次数replace(old, new)全局替换指定子串strip(chars)去除字符串首尾指定字符无参数默认去除空格、换行center(width, fillchar)固定宽度居中两侧填充指定字符join(可迭代对象)使用当前字符串拼接容器内所有元素代码示例# 演示字符串常用处理方法 upper/lower/split/replace/count/strip/center/join x AaBb Cc Bb print(x.upper()) # 输出结果AABB CC BB print(x.lower()) # 输出结果aabb cc bb print(x.split()) # 输出结果[AaBb, Cc, Bb] print(x.replace(Aa, 12)) # 输出结果12Bb Cc Bb print(x.count(Bb)) # 输出结果2 print(x.strip()) # 输出结果AaBb Cc Bb print(x.center(20, *)) # 输出结果*****AaBb Cc Bb ***** # join拼接 print(-.join([2026, 08, 03])) # 输出结果2026-08-03六、综合实操练习1 数字转中文数字输入0~9数字输出对应中文汉字# 演示利用索引将数字转换为中文数字 num_str 零一二三四五六七八九 n int(input(输入0-9数字)) print(num_str[n]) # 输入5输出结果五练习2 数字转星期输入1~7输出对应星期文本# 演示利用索引将数字转换为星期文本 week 一二三四五六日 n int(input(输入1-7)) print(f星期{week[n-1]}) # 输入3输出结果星期三练习3 文本清洗去除文本中多余省略号规整诗词排版# 演示使用 replace 方法清洗文本中的多余省略号 poem 过零丁洋 【宋】文天祥 辛苦遭逢起一经,干戈寥落四……周星……山河破碎风飘絮, 身世浮沉雨打萍……惶恐滩头说惶恐,零丁洋里叹零丁……人生自古谁无死,留取丹心照汗青…… new_poem poem.replace(……, ) print(new_poem) # 输出结果去除所有省略号后的完整诗词七、字符串格式化输出字符串格式化是指按照指定模板将变量、表达式的结果嵌入到字符串中生成新的文本。Python 提供了三种主流格式化方式下面逐一讲解并对比。1. 使用 % 运算符的旧式格式化这是 Python 早期版本就支持的格式化方式通过%运算符配合占位符实现。常用占位符%s表示字符串、%d表示整数、%f表示浮点数。name 小明 age 18 score 92.5 # 按顺序传入多个值使用元组包裹 print(姓名%s年龄%d成绩%.1f % (name, age, score)) # 输出结果 # 姓名小明年龄18成绩92.5适用场景维护老项目、阅读历史代码时经常遇到需要能读懂并修改。优点写法简洁适合简单场景。缺点占位符与变量一一对应参数较多时容易错位类型不匹配会报错可读性较差。2. 使用 str.format() 方法Python 2.6 引入的格式化方法通过花括号{}作为占位符支持位置参数、关键字参数和格式控制。name 小红 age 20 score 88.5 # 位置参数按顺序填充 print(姓名{}年龄{}成绩{}.format(name, age, score)) # 关键字参数按名称填充顺序可打乱 print(姓名{n}成绩{s}年龄{a}.format(nname, aage, sscore)) # 格式控制保留两位小数 print(成绩{:.2f}.format(score)) # 输出结果 # 姓名小红年龄20成绩88.5 # 姓名小红成绩88.5年龄20 # 成绩88.50适用场景需要灵活控制参数顺序、重复使用同一变量或进行复杂格式控制时。优点支持位置与关键字两种传参方式格式控制能力更强代码可读性优于 % 格式化。缺点写法相对繁琐模板较长时不够直观。3. 使用 f-stringPython 3.6Python 3.6 引入的格式化字符串字面量在字符串前加f或F直接在花括号内写变量名或表达式运行时自动求值并嵌入。name 小刚 age 22 score 95.75 # 直接嵌入变量 print(f姓名{name}年龄{age}成绩{score}) # 花括号内可写表达式 print(f明年年龄{age 1}) # 格式控制保留一位小数 print(f成绩{score:.1f}) # 输出结果 # 姓名小刚年龄22成绩95.75 # 明年年龄23 # 成绩95.8适用场景日常开发、日志输出、快速拼接文本的首选方式也是目前社区推荐的主流写法。优点语法最简洁直观花括号内可直接写表达式运行效率最高可读性最好。缺点要求 Python 3.6 及以上版本低版本环境无法使用。三种方式对比总结对比项% 运算符str.format()f-string引入版本Python 2 早期Python 2.6Python 3.6占位符%s%d%f{}{变量}可读性较差较好最好运行效率较低中等最高推荐程度仅需读懂兼容旧代码日常首选选型建议新写的代码优先使用 f-string需要兼容 Python 3.6 以下版本时使用 str.format()遇到老代码中的 % 格式化能读懂并正确维护即可。八、本章总结上一章我们掌握了各类数值的计算逻辑本章学习的字符串是文本处理的基础二者搭配即可完成绝大多数日常脚本功能。本章核心要点梳理核心概念关键语法/方法典型应用场景字符串书写形式单行 / 、多行 / 、原始字符串r 、转义符\定义文本、存储长段落、处理文件路径与正则表达式字符串操作符拼接、复制* n、成员判断in / not in、大小比较 !文本拼接、重复输出、子串存在性校验、按Unicode编码排序对比索引与切片正向索引[下标]、反向索引[-下标]、切片[N:M:step]、倒序[::-1]定位单个字符、截取子串、快速实现文本倒序字符串不可变特性所有修改操作均生成新字符串原字符串不变安全处理文本数据避免原值被意外修改内置函数与专属方法内置函数len()ord()chr()专属方法split()replace()strip()join()等统计长度、字符编码转换、文本切割、替换、去空白、拼接容器元素原始字符串拓展r 前缀内部反斜杠不再作为转义符Windows文件路径、正则表达式等高频转义冲突场景