四、字符串类型学习笔记
2026-02-19
Python基础
type
Post
status
Published
date
Feb 19, 2026
slug
python-strings-notes-4
summary
字符串是 Python 中最常用的数据类型!单双引号的选择、转义字符、字符串不可变性、各种方法函数,还有格式化输出的三种方式。特别是 f-string,用起来太方便了!
tags
Python数据的存储与运算
category
Python基础
icon
password
💡 学习感悟:字符串是 Python 中最常用的数据类型!单双引号的选择、转义字符、字符串不可变性、各种方法函数,还有格式化输出的三种方式。特别是 f-string,用起来太方便了!
1. 什么是字符串?
字符串(String) 是由零个或多个字符组成的有序不可变序列,用于表示文本数据。
在 Python 中,字符串使用
str 类型表示。📝 我的理解:字符串就像是字符的队列——每个字符按顺序排列,有位置(索引),但内容不能修改。就像排队买票,人可以找到位置(索引),但不能插队改变顺序(不可变)。
2. 字符串的定义方式
Python 中定义字符串有三种方式:
2.1 单引号定义
2.2 双引号定义
� 我的理解:单引号和双引号在 Python 中没有本质区别,可以互换使用。但当字符串中包含引号时,需要灵活选择:
⚠️ 踩坑记录:刚开始我总在这上面报错!记住口诀:里面有什么,外面就用另一种。里面有单引号,外面用双引号;里面有双引号,外面用单引号。
2.3 三引号定义(多行字符串)
为什么需要三引号?
当需要表示多行文本时,三引号可以保留文本的原始格式(包括换行和缩进):
使用三个单引号
''' 或三个双引号 """ 都可以:� 我的理解:三引号就像是文本框——你在里面写什么格式,输出就是什么格式,换行、空格都会保留。特别适合写长文本、文档说明。
3. 字符串的基本操作
3.1 字符串拼接
使用
+ 运算符可以将两个字符串拼接起来:字符串与数字不能直接拼接
⚠️ 踩坑记录:这个错误太常见了!字符串和数字是不同类型,不能直接相加。要用str()把数字转成字符串,或者用格式化方法(后面会讲)。
3.2 字符串重复
使用
* 运算符可以重复字符串:📝 我的理解:字符串*数字,就是把这个字符串重复那么多次。做分隔线、装饰线时特别方便!
3.3 字符串长度
使用
len() 函数获取字符串的长度(字符个数):📝 我的理解:len()就像是数人数——一个个数过去,返回总共有多少个字符。注意中文、英文、数字、空格都算一个字符。
4. 字符串索引和切片
4.1 索引(Indexing)
字符串中的每个字符都有一个索引(位置编号),从 0 开始:
� 我的理解:索引就像是门牌号——第一个字符住 0 号,第二个住 1 号... 倒数第一个住 -1 号。正数从前往后数,负数从后往前数。
⚠️ 注意:字符串是不可变的,不能通过索引修改字符
4.2 切片(Slicing)
使用切片可以获取字符串的一部分,语法为:
字符串[开始:结束:步长]📝 我的理解:切片就像是切蛋糕——[0:5]表示从第 0 块切到第 5 块(但不包含第 5 块)。[::-1]是倒着切,所以能反转字符串!
实际应用场景
5. 字符串常用方法
5.1 查找和替换
📝 我的理解:
find()和index()都是找位置,但find()找不到返回 -1,index()找不到报错
count()是数数——统计出现了几次
replace()是替换——但原字符串不变,返回新的字符串(因为字符串不可变)
5.2 大小写转换
📝 我的理解:大小写转换在不区分大小写的比较时很有用。比如验证码"AbC123"和"abc123",都转成大写再比较,就能判断是否正确。
5.3 去除空白字符
📝 我的理解:strip()就像是修剪——把字符串两边的空格、换行等空白字符剪掉。处理用户输入时特别有用,因为用户可能不小心多打了空格。
5.4 分割和连接
📝 我的理解:
split()是切开——按照指定字符把字符串切成列表
join()是粘合——用指定字符把列表粘成字符串
- 注意
join()的用法:'连接符'.join(列表)
5.5 判断方法
📝 我的理解:这些方法就像是检查员——检查字符串是否符合某种条件,返回True或False。验证用户输入时很有用,比如判断是不是纯数字。
6. 字符串格式化
为什么需要字符串格式化?
在实际编程中,我们经常需要将变量的值嵌入到固定模板中生成新的字符串:
Python 提供了三种字符串格式化方式:
%格式化(旧式)
format()方法(较新)
f-string(最新,Python 3.6+,推荐)
6.1 % 格式化(旧式)
📝 我的理解:%格式化是 C 语言风格的,现在不推荐使用,但阅读老代码时可能会遇到。%s表示字符串,%d表示整数,%f表示浮点数。
6.2 format() 方法
📝 我的理解:format()比%更灵活,可以用命名参数,不怕顺序错乱。但写起来还是有点长...
6.3 f-string(推荐,Python 3.6+)
f-string 是 Python 3.6 引入的新特性,最简洁、最直观、最高效!
📝 我的理解:f-string 是我的最爱!在字符串前面加个f,然后把变量用{}包起来,搞定!还可以在{}里写表达式、调用方法、控制格式,太方便了!
三种方式对比
7. 转义字符
转义字符以反斜杠
\\ 开头,用于表示特殊字符:转义字符 | 含义 |
\n | 换行 |
\t | 制表符(Tab) |
\\ | 反斜杠本身 |
\' | 单引号 |
\" | 双引号 |
📝 我的理解:转义字符就像是特殊指令——\n告诉计算机换行,\t告诉计算机跳格。如果不想让转义字符生效(比如 Windows 路径),就在字符串前加r,表示"原始字符串"。
8. 遇到的问题和解决
8.1 索引越界
⚠️ 踩坑记录:访问字符串索引时,一定要确保索引在有效范围内(0 到 len-1)。负数索引也要注意不要越界。
8.2 误以为字符串可变
⚠️ 踩坑记录:字符串是不可变的!不能直接修改某个字符。需要修改时,只能创建新的字符串。
8.3 混淆 find() 和 index()
⚠️ 踩坑记录:find()和index()功能相似,但找不到时的行为不同。不确定子串是否存在时,用find()更安全。
8.4 忘记字符串不可变导致 replace() 无效
⚠️ 踩坑记录:replace()不会修改原字符串,而是返回新字符串!必须赋值给变量才能保存修改结果。
9. 核心知识点整理
9.1 字符串定义方式
方式 | 示例 | 适用场景 |
单引号 | 'Hello' | 简单字符串 |
双引号 | "Hello" | 包含单引号的字符串 |
三引号 | """Hello""" | 多行文本 |
9.2 常用方法速查表
方法 | 功能 | 示例 |
len() | 获取长度 | len("Hello") → 5 |
find() | 查找位置 | "abc".find("b") → 1 |
replace() | 替换 | "a,b".replace(",", "-") → "a-b" |
split() | 分割 | "a,b".split(",") → ['a', 'b'] |
join() | 连接 | "-".join(['a', 'b']) → "a-b" |
strip() | 去空白 | " a ".strip() → "a" |
upper() | 转大写 | "abc".upper() → "ABC" |
lower() | 转小写 | "ABC".lower() → "abc" |
9.3 格式化方式对比
方式 | 示例 | 推荐度 |
% 格式化 | "%s" % name | ⭐⭐ |
format() | "{}".format(name) | ⭐⭐⭐ |
f-string | f"{name}" | ⭐⭐⭐⭐⭐ |
9.4 需要注意的
- 优先使用 f-string 进行格式化
- 字符串不可变,修改操作会返回新字符串
- 不确定子串是否存在时,用
find()而不是index()
- 处理用户输入时用
strip()去除多余空白
Loading...
