四、字符串类型学习笔记

四、字符串类型学习笔记

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 判断方法

📝 我的理解:这些方法就像是检查员——检查字符串是否符合某种条件,返回 TrueFalse。验证用户输入时很有用,比如判断是不是纯数字。

6. 字符串格式化

为什么需要字符串格式化?

在实际编程中,我们经常需要将变量的值嵌入到固定模板中生成新的字符串:
Python 提供了三种字符串格式化方式:
  1. % 格式化(旧式)
  1. format() 方法(较新)
  1. 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() 去除多余空白
推荐云服务

雨云 - 云服务器首选

稳定 · 高速 · 性价比超高

使用优惠码立享折扣,开启你的云端之旅~

一元试用秒级开通24h在线客服

优惠码

zqf
立即访问
Loading...
灵心小窝

灵心小窝

这里不是一个喧闹的地方,只是用来存放一些还不想遗忘的东西。

声明 © 2026 早清风
加载中...