Python字符串操作方法实例详细说明

作者:袖梨 2026-08-10

Python字符串操作方法实例详细说明需要先看清适用场景和关键步骤,避免只记结论却忽略实际限制。

前言

上一章我们完整学习了 Python 全部数字类型与各类数值运算符,掌握了整数、浮点数、复数的定义、混合运算规则与内置数学函数,能够完成所有数值计算类代码。本章将聚焦编程中使用频率最高的数据类型——字符串,系统讲解字符串定义、转义字符、索引切片、操作符、内置函数与常用处理方法。

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 = r"D:codepython_demo"print(path)# 输出结果:# D:codepython_demo

3. 转义字符

反斜杠 作为转义标识,用来输出特殊不可见字符、引号、反斜杠本身,常用转义符:

转义符作用
n换行
tTab制表空格
'输出单引号
"输出双引号
输出反斜杠
# 演示转义字符 t 和 ' 的使用print("爱t生活t爱tPython")print('文本里包含单引号'和双引号"')# 输出结果:# 爱生活爱Python# 文本里包含单引号'和双引号"

二、字符串基础操作符

1. 拼接与复制

  1. +:拼接两个字符串,只能字符串之间相加,不能直接和数字拼接
  2. * n:将字符串重复复制n次输出
# 演示字符串拼接 + 与复制 * 操作符s1 = "Hello"s2 = "World"print(s1 + s2)print(s1 * 3)# 输出结果:# HelloWorld# HelloHelloHello

2. 成员判断in / not in

判断一段子串是否存在于目标字符串,返回布尔值 True / False

# 演示 in 与 not in 判断子串是否存在text = "Python编程学习"print("Python" in text)print("Java" not in text)# 输出结果:# True# True

3. 字符串大小比较

字符串按照字符对应的Unicode编码值从左到右逐位对比,支持 > >= < <= == != 全部比较运算符。

补充规则:大写字母编码小于小写字母,数字编码小于英文字母。

# 演示字符串按Unicode编码逐位比较print("Python" >= "python")  # False,大写P编码更小print("123" == "123")        # Trueprint("abc" < "abcd")       # 短字符串匹配完成后更小# 输出结果:# False# True# True

三、字符串索引与切片

字符串属于序列类型,每个字符拥有独立位置编号,分为正向索引、反向索引,搭配切片语法可以自由截取任意片段。

1. 索引访问[下标]

正向索引:从左至右,从0开始计数

反向索引:从右至左,从-1开始计数

# 演示正向索引与反向索引访问字符s = "世界那么大,我想去看看"print(s[2])   # 正向索引,输出“那”print(s[-6])  # 反向索引# 输出结果:# 那# 想

2. 切片语法[N:M:step]

语法规则:[起始下标:结束下标:步长]

  1. 左闭右开:包含起始位置,不包含结束位置
  2. 省略N:默认从0开始;省略M:默认截取到末尾;省略step:步长为1
  3. 步长为负数时,实现倒序截取
# 演示切片语法 [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/octtext = "全国计算机等级考试Python"print(len(text))   # 输出结果:14print(ord('a'))    # 输出结果:97print(chr(98))     # 输出结果:b# hex() / oct() 示例num = 255print(hex(num))    # 输出结果:0xffprint(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/joinx = '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"))      # 输出结果:2print(x.strip())          # 输出结果:AaBb Cc Bbprint(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 = 18score = 92.5# 按顺序传入多个值,使用元组包裹print("姓名:%s,年龄:%d,成绩:%.1f" % (name, age, score))# 输出结果:# 姓名:小明,年龄:18,成绩:92.5

适用场景:维护老项目、阅读历史代码时经常遇到,需要能读懂并修改

优点:写法简洁,适合简单场景

缺点:占位符与变量一一对应,参数较多时容易错位;类型不匹配会报错,可读性较差。

2. 使用 str.format() 方法

Python 2.6 引入的格式化方法,通过花括号 {} 作为占位符,支持位置参数、关键字参数和格式控制

name = "小红"age = 20score = 88.5# 位置参数:按顺序填充print("姓名:{},年龄:{},成绩:{}".format(name, age, score))# 关键字参数:按名称填充,顺序可打乱print("姓名:{n},成绩:{s},年龄:{a}".format(n=name, a=age, s=score))# 格式控制:保留两位小数print("成绩:{:.2f}".format(score))# 输出结果:# 姓名:小红,年龄:20,成绩:88.5# 姓名:小红,成绩:88.5,年龄:20# 成绩:88.50

适用场景需要灵活控制参数顺序、重复使用同一变量,或进行复杂格式控制时。

优点:支持位置与关键字两种传参方式,格式控制能力更强,代码可读性优于 % 格式化。

缺点:写法相对繁琐,模板较长时不够直观

3. 使用 f-string(Python 3.6+)

Python 3.6 引入的格式化字符串字面量,在字符串前加 fF直接在花括号内写变量名或表达式,运行时自动求值并嵌入。

name = "小刚"age = 22score = 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文件路径、正则表达式等高频转义冲突场景

相关文章

精彩推荐