前言
上一章我们完整学习了 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:\code\python_demo" print(path) # 输出结果: # d:\code\python_demo
3. 转义字符\
反斜杠 \ 作为转义标识,用来输出特殊不可见字符、引号、反斜杠本身,常用转义符:
| 转义符 | 作用 |
|---|---|
\n | 换行 |
\t | tab制表空格 |
\' | 输出单引号 |
\" | 输出双引号 |
\\ | 输出反斜杠 |
# 演示转义字符 \t 和 \' 的使用
print("爱\t生活\t爱\tpython")
print('文本里包含单引号\'和双引号"')
# 输出结果:
# 爱 生活 爱 python
# 文本里包含单引号'和双引号"二、字符串基础操作符
1. 拼接与复制
+:拼接两个字符串,只能字符串之间相加,不能直接和数字拼接* 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
# 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(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 引入的格式化字符串字面量,在字符串前加 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.6 | python 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文件路径、正则表达式等高频转义冲突场景 |
到此这篇关于python字符串操作方法的文章就介绍到这了,更多相关python字符串操作内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论