查看全课大纲(第 22 / 51 节)
- 1.Python 是什么?为什么值得学?
- 2.如何为 Python 编程准备一个“全家桶”环境?
- 3.Python 有哪几种执行方法?
- 4.行与缩进到底有什么用?
- 5.注释有什么用,怎么写?
- 6.变量:如何给数据起个好名字?
- 7.运算符的优先级和常见坑点是什么?
- 8.Python 中,数字和布尔值究竟有哪几种?
- 9.输入函数 `input()` 和文件读取 `open()` 怎么用?
- 10.如何将程序的结果展示给用户或保存下来?
- 11.CSV 文件怎么读怎么写才方便?
- 12.列表是什么,如何创建和访问它?
- 13.列表的修改操作,有哪些方法?
- 14.列表切片为什么能取到部分元素?排序和查找又该怎么用?
- 15.判断语句:如何让程序根据条件做不同的事?
- 16.for 循环如何遍历序列中的元素?
- 17.while 循环什么时候才会停?
- 18.while 循环的结束条件,你写对了吗?
- 19.循环中途想提前结束,怎么办?
- 20.`break` 和 `continue` 到底有什么区别?
- 21.列表推导式如何让代码更简洁高效?
- 22.字符串怎么定义、拼接和操作?
- 23.元组:为什么定义单个元素时要加逗号?
- 24.集合(set)怎么用?如何快速去重和做集合运算?
- 25.字典是什么,为什么比列表更方便?
- 26.字典的增删改查与遍历,如何避免 KeyError?
- 27.函数里的变量,为什么有的能用有的不能用?
- 28.在函数内部修改全局变量,为什么有时不生效?
- 29.函数里能修改全局变量吗?返回值怎么用?
- 30.匿名函数:如何用 lambda 快速定义简单函数?
- 31.面向对象编程是什么,为什么需要它?
- 32.类中的方法和属性到底怎么定义和使用?
- 33.如何控制对对象内部属性和方法的访问?
- 34.异常发生时,程序会怎样继续执行?
- 35.如何组织代码:包和模块
- 36.`if __name__ == '__main__'` 到底有什么用?
- 37.如何用 IDE 的 Debug 功能排查程序错误?
- 38.Matplotlib 绘图的第一步该做什么?
- 39.Figure 是什么,如何设置图形尺寸?
- 40.如何自定义 Matplotlib 的坐标轴?
- 41.如何为图表添加图例,让不同曲线一目了然?
- 42.饼图怎么画才能直观展示数据占比?
- 43.如何用 Matplotlib 绘制散点图?
- 44.柱状图怎么画?
- 45.如何使用 Matplotlib 绘制等高线图?
- 46.如何在 Matplotlib 中绘制子图?
- 47.zip 函数如何把多个列表“打包”在一起?
- 48.如何给可迭代对象加上索引?
- 49.random 模块如何生成随机数?
- 50.math 模块怎么用?
- 51.Counter 如何快速统计元素出现次数?
字符串怎么定义、拼接和操作?
约 18 分钟
小象实战讲义 · Python 编程从入门到实践
在学习了数字和列表之后,本节我们进入另一种基础且无处不在的数据类型:字符串。无论是处理用户输入、读取文件还是输出信息,都离不开字符串。学完本节,你将掌握字符串的定义、拼接、访问内部字符以及使用其内置方法完成常见任务。本节是第3章《更多数据结构》的开篇,承接了之前对基本数据结构的理解,并为后续学习字典、元组等更复杂结构打下基础。
💡 核心导读
- 定义与拼接:用单/双引号定义字符串,用加号
+或格式化方法进行拼接。 - 访问与切片:通过下标访问单个字符,使用切片语法获取子串。
- 常用方法:使用
.split()、.format()、.upper()等方法处理和转换字符串。 - 如何探索:学会利用 IDE 补全、
dir()函数和官方文档来查找和使用更多字符串方法。
字符串的定义与拼接
字符串是用于表示文本的数据类型。在 Python 中,定义字符串主要有两种方式:使用单引号 ' 或双引号 " 将文本内容括起来。
将两个或多个字符串连接成一个新字符串的操作称为字符串拼接。最直接的方法是使用加号 +;另一种更灵活的方式是字符串格式化,它允许你将变量值嵌入到一个固定的字符串模板中。
# 使用双引号或单引号定义字符串
s1 = "hello"
s2 = 'python'
print(s1)
print(s2)
# 用加号拼接字符串
s3 = s1 + s2 # 直接拼接
print(s3)
s4 = s1 + " " + s2 # 拼接时加入空格
print(s4)
# 用格式化符号拼接:%s 代表字符串,%d 代表整数
name = "Mike"
age = 20
print("Name: %s, Age: %d" % (name, age))
a1 = 10
a2 = 20
# 在格式化字符串中进行计算
print("%d + %d = %d" % (a1, a2, a1 + a2))hello
python
hellopython
hello python
Name: Mike, Age: 20
10 + 20 = 30访问字符与切片操作
字符串中的每个字符都有一个位置索引(下标),索引从 0 开始。你可以像访问列表元素一样,通过方括号 [] 和索引来获取字符串中特定位置的字符;下标也可以为负数,-1 表示最后一个字符。
切片操作可以从字符串中提取一个子串。语法为 字符串[起始索引:结束索引:步长]。这是一个左闭右开区间,即包含起始索引的字符,但不包含结束索引的字符;省略起始索引时默认从开头开始,省略结束索引时默认取到末尾。
s = "hello"
print(s[0]) # 第1个字符,索引为0
print(s[-1]) # 倒数第1个字符
print(s[-2]) # 倒数第2个字符
line = "zhangsan,20"
name = line[0:8] # 索引0到7,不含8,即名字
print(name)
print(line[:8]) # 省略起始索引,默认从0开始
print(line[0::2]) # 从0开始到末尾,步长为2,每隔一个字符取一个h
o
l
zhangsan
zhangsan
zaga,0常用的字符串方法
字符串类型内置了许多方法(函数),可以方便地完成各种操作。调用方法的格式是:字符串变量.方法名(参数)。
1. 判断与转换:.islower() 判断字符串是否全部由小写字母组成,.upper() 将字符串中所有字母转换为大写。
2. 切分字符串:.split(分隔符) 根据指定的分隔符将字符串切分成多个部分,并返回一个列表。
3. 格式化字符串:.format() 在字符串模板中用花括号 {} 作为占位符。花括号内可以写参数的编号,用来指定填充顺序;冒号后面可以写格式控制,例如浮点数精度或字符串显示宽度。
print("hello".islower()) # 全小写
print("Hello".islower()) # 首字母大写
print("Hello".upper()) # 转换为大写
data = "apple,banana,orange"
fruits = data.split(",") # 以逗号为分隔符进行切分
print(fruits)
print(type(fruits)) # 查看返回值的类型
# 按顺序填充
print("{}:{}".format("name", "Mike"))
# 按编号填充,输出顺序可以自定义
print("{0} + {1} = {2}".format(2, 3, 2 + 3))
print("{2} = {1} + {0}".format(2, 3, 2 + 3))
# 控制浮点数精度,保留3位有效数字
print('{0:.3}'.format(1 / 3))
# 控制字符串显示宽度,每个占位符宽度为7个字符
print('{0:7}{1:7}'.format('use', 'python'))True
False
HELLO
['apple', 'banana', 'orange']
<class 'list'>
name:Mike
2 + 3 = 5
5 = 3 + 2
0.333
use python 如何探索更多字符串方法?
Python 提供了丰富的字符串方法,我们无法一一记住。掌握以下探索工具至关重要:
- IDE 自动补全:在集成开发环境中输入一个字符串变量后加
.,通常会弹出方法列表供你选择。 - 使用
dir()函数:dir(字符串变量)可以列出该字符串对象所有可用的属性和方法名。 - 查阅官方文档:Python 官方文档是终极参考。你可以搜索“Python string methods”找到标准库中关于字符串方法的详细说明和示例。
s = "example"
# 这会输出一个很长的方法列表,其中包含 split, upper, format 等
# 为便于阅读,下面每行打印 8 个方法名
names = dir(s)
for i in range(0, len(names), 8):
print(names[i:i + 8])['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__']
['__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__']
['__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__']
['__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__']
['__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith']
['expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii']
['isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle']
['isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix']
['removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip']
['split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper']
['zfill']📝 动手练一练
尝试使用一句 Python 代码将列表 ['Jan', 'Feb', 'March'] 中的单词都转换为大写,并且用 ' is followed by ' 将它们串接起来。
👉 点击查看参考答案
思路:首先需要将列表中的每个字符串转换为大写,这可以用列表推导式配合 .upper() 方法完成。然后,使用字符串的 .join() 方法,用指定的连接符将列表中的所有字符串连接成一个新字符串。
input_list = ['Jan', 'Feb', 'March']
# 1. 用列表推导式将每个元素转为大写,得到新列表
# 2. 用 ' is followed by ' 连接新列表中的所有字符串
result = ' is followed by '.join([word.upper() for word in input_list])
print(result)JAN is followed by FEB is followed by MARCH常见错误
| 错误写法 | 现象或报错 | 原因 | 正确写法 |
|---|---|---|---|
print(s[10])(s = "hello") | IndexError: string index out of range | 索引超出了字符串的长度范围(0 到 4)。 | 使用有效索引,如 s[0] 或 s[-1]。 |
s = 'It's a book' | SyntaxError: unterminated string literal (detected at line 1) | 字符串内部本身有单引号,再用单引号定义会导致解释器提前结束字符串。 | 外部改用双引号:s = "It's a book",或对内部单引号转义:s = 'It\'s a book'。 |
"年龄:" + 25 | TypeError: can only concatenate str (not "int") to str | 加号 + 只能拼接字符串,不能直接拼接字符串和整数。 | 先把整数转成字符串:"年龄:" + str(25),或使用格式化:"年龄:%d" % 25。 |
小结
- 字符串用单引号
'或双引号"定义,内部包含引号时需交替使用或进行转义。 - 使用加号
+可拼接字符串;使用%或.format()可进行格式化拼接,后者更灵活。 - 通过下标
[索引]可以访问字符串中的单个字符,索引从 0 开始,支持负数倒序索引。 - 切片操作
[起始:结束:步长]用于获取子串,区间为左闭右开。 - 字符串对象有许多内置方法,如
.upper()、.split()、.format()等,通过变量名.方法名()调用。 - 善用 IDE 补全、
dir()函数和官方文档来探索未知的方法。
📋 行动清单
- 在 Python 交互环境中,定义一个包含你名字的字符串,分别用加号和
.format()方法将其与“你好,”拼接并打印。 - 对字符串
"PythonProgramming"进行切片操作,分别取出"Python"和"Programming"。 - 查阅文档或使用
dir(),找到一个能将字符串" Hello World "首尾空格去掉的方法并尝试使用。
—— 小象教研组
配套资料 · 直接下载
课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。
- 下载第3章代码包:字符串(含1 个 Notebook)ZIP · 1KB