[Python编程] Python3 字符串
对于 Python 初学者而言,字符串是入门阶段最常用、也最基础的数据类型之一。无论是处理文本数据、用户输入,还是输出结果,都离不开字符串的操作。本文将基于 Python3 的特性,从字符串的创建、更新,到转义字符、运算符、特殊语法(三引号、格式化)及常用内建函数,系统梳理字符串的核心知识,帮助你快速掌握字符串的使用技巧。
一、Python3 字符串基础:是什么?怎么用?
字符串是 Python 中用于表示文本的数据类型,它由一系列字符组成,用单引号(' ') 或双引号(" ") 包裹即可创建。需要注意的是,Python 没有 “单字符类型”—— 哪怕是单个字符(如 'a'),在 Python 中也会被视为长度为 1 的字符串。
1️⃣字符串的创建
创建字符串的方式非常简单,只需为变量赋值即可,示例如下:
python
运行
# 用单引号创建字符串
var1 = 'Hello World!'
# 用双引号创建字符串(与单引号功能完全一致,可根据需求选择)
var2 = "Python Programming"
# 单个字符也是字符串
var3 = 'A'
2️⃣字符串的更新:截取与拼接
Python 字符串本身是 “不可变” 的(即无法直接修改字符串中的某个字符),但我们可以通过截取字符串的一部分,再与其他字符串拼接,实现 “更新” 效果。
核心逻辑:
- 截取字符串:使用
[索引]
或[起始:结束]
(左闭右开原则,即包含起始索引,不包含结束索引)。 - 拼接字符串:使用
+
运算符。
实例演示:
python
运行
# 原字符串
var1 = 'Hello World!'
# 截取前6个字符(索引0-5),拼接'Python!'
updated_var = var1[:6] + 'Python!'
print("已更新字符串:", updated_var)
# 运行结果:已更新字符串: Hello Python!
二、Python3 转义字符:处理特殊字符
当需要在字符串中插入无法直接输入的字符(如换行、制表符),或与引号冲突的字符(如单引号内的单引号)时,需要使用反斜杠(\) 开头的转义字符。
1️⃣常用转义字符表
转义字符 | 描述 | 示例 | 输出结果 |
---|---|---|---|
\ (行尾) | 续行符(将一行代码拆分为多行) | print("Hello \nWorld") | (实际为换行,此处简化)Hello World |
\\ | 表示一个反斜杠符号 | print("C:\\Users") | C:\Users |
\' | 表示一个单引号 | print('He said: \'Hi!\'') | He said: 'Hi!' |
\" | 表示一个双引号 | print("She said: \"Hello!\"") | She said: "Hello!" |
\n | 换行符 | print("Line1\nLine2") | Line1 Line2 |
\t | 横向制表符(类似按 Tab 键) | print("Name:\tAge") | Name: Age |
\b | 退格符(删除前一个字符) | print("Hello\b World") | Hello World(删除了 'Hello' 后的空格) |
\f | 换页符(常用于打印机,终端中可能显示为分隔) | print("Hello\fWorld") | Hello World(终端中可能分行显示) |
\yyy | 八进制数表示的字符(y 为 0-7) | print("\012") | 换行(\012 对应 ASCII 中的换行符) |
\xyy | 十六进制数表示的字符(y 为 0-9/A-F) | print("\x41") | A(\x41 对应 ASCII 中的 'A') |
2️⃣转义字符与进制转换实例
除了上述常用场景,转义字符还可结合进制转换(如 ASCII 码)使用,示例如下:
python
运行
# 1. 输出带双引号的字符串
print("Hello, world!\"") # 输出:Hello, world!"# 2. 换行与制表符结合
print("Hello, world!\nHow are you?") # 输出:Hello, world!(换行)How are you?
print("Hello, world!\tHow are you?") # 输出:Hello, world! How are you?# 3. ASCII码相关:ord()获取字符的ASCII值,\x表示十六进制
print("A对应的ASCII值为:", ord("A")) # 输出:A对应的ASCII值为:65
print("\x41 是A的ASCII代码") # 输出:A 是A的ASCII代码# 4. 十进制转二进制、八进制、十六进制(扩展实用技巧)
decimal_num = 42 # 十进制数
binary_num = bin(decimal_num) # 转二进制
octal_num = oct(decimal_num) # 转八进制
hex_num = hex(decimal_num) # 转十六进制
print("二进制:", binary_num) # 输出:二进制:0b101010
print("八进制:", octal_num) # 输出:八进制:0o52
print("十六进制:", hex_num) # 输出:十六进制:0x2a
三、Python3 字符串运算符:简化字符串操作
Python 提供了一系列专门用于字符串的运算符,能快速实现拼接、重复、截取、判断成员等功能。以下是常用运算符的详细说明(假设a = "Hello"
,b = "Python"
):
运算符 | 描述 | 实例 | 输出结果 |
---|---|---|---|
+ | 字符串连接(拼接) | a + b | "HelloPython" |
* | 重复输出字符串 | a * 2 | "HelloHello" |
[] | 通过索引获取单个字符(索引从 0 开始) | a[1] | "e"(a 的第 2 个字符) |
[:] | 截取子字符串(左闭右开) | a[1:4] | "ell"(索引 1-3 的字符) |
in | 成员运算符:判断字符是否在字符串中,是则返回 True | 'H' in a | True |
not in | 成员运算符:判断字符是否不在字符串中,是则返回 True | 'M' not in a | True |
r/R | 原始字符串:不解析转义字符,按字面意思输出 | print(r"\n") | \n(不会换行) |
% | 格式字符串(旧版格式化方式,下文会讲更优的 f-string) | print("Hello %s" % b) | "Hello Python" |
实例演示:
python
运行
a = "Hello"
b = "Python"# 1. 拼接与重复
print("拼接:", a + b) # 输出:拼接:HelloPython
print("重复:", a * 2) # 输出:重复:HelloHello# 2. 索引与截取
print("a[1]:", a[1]) # 输出:a[1]:e
print("a[1:4]:", a[1:4]) # 输出:a[1:4]:ell# 3. 成员判断
print("'H'在a中?", 'H' in a) # 输出:'H'在a中? True
print("'M'不在a中?", 'M' not in a) # 输出:'M'不在a中? True# 4. 原始字符串
print("普通字符串:\n") # 输出:(换行)
print("原始字符串:", r"\n") # 输出:原始字符串:\n
四、Python3 三引号:处理多行与复杂字符串
当需要创建跨多行的字符串,或包含大量特殊字符(如换行、制表符、引号)时,使用三引号("""""" 或 '''''') 会非常便捷。它能让字符串保持 “所见即所得”(WYSIWYG)的格式,无需频繁使用转义字符。
1️⃣三引号的核心优势
- 支持多行字符串,直接保留换行和缩进。
- 可直接包含单引号、双引号,无需转义。
- 适合嵌入 HTML、SQL 等代码片段(避免繁琐的字符串拼接)。
2️⃣实例演示:
python
运行
# 用三引号创建多行字符串
para_str = """这是一个多行字符串的实例
多行字符串可以直接使用制表符\t(TAB键效果)
也可以直接包含换行符\n(但实际无需手动写,换行即可)
还能直接用单引号'和双引号",无需转义
"""
print(para_str)
运行结果:
plaintext
这是一个多行字符串的实例
多行字符串可以直接使用制表符 (TAB键效果)
也可以直接包含换行符
(但实际无需手动写,换行即可)
还能直接用单引号'和双引号",无需转义
五、Python3 字面量格式化字符串:优雅的字符串拼接
在需要将变量、表达式的结果嵌入字符串时,“格式化字符串” 是比+
拼接更优雅的方式。Python3.6 + 推荐使用f-string(字面量格式化字符串),语法简洁且效率高。
1️⃣f-string 基础用法
- 语法:以
f
或F
开头,字符串中用{}
包裹变量或表达式,Python 会自动计算并替换{}
内的内容。 - 优势:无需手动转换数据类型,支持直接嵌入表达式。
实例演示:
python
运行
# 1. 嵌入变量
name = "Python"
print(f"Hello {name}!") # 输出:Hello Python!# 2. 嵌入表达式(直接计算)
print(f"1 + 2 = {1 + 2}") # 输出:1 + 2 = 3# 3. 嵌入字典值
web = {"name": "Python", "url": "docs.python.org/zh-cn/"}
print(f"{web['name']} 的官方文档:{web['url']}") # 输出:Python 的官方文档:docs.python.org/zh-cn/
2️⃣f-string 进阶:Python3.8 + 的 “表达式 + 结果” 拼接
Python3.8 及以上版本支持在{}
中用=
符号,同时输出 “表达式” 和 “结果”,适合调试时使用:
python
运行
x = 1
# 输出“表达式x+1”和“结果2”
print(f"{x + 1 = }") # 输出:x + 1 = 2
六、Python3 字符串内建函数:提升操作效率
Python 为字符串提供了大量 “内建函数”(无需导入模块,直接调用),涵盖大小写转换、查找、替换、拼接等常见需求。以下是最常用的内建函数整理:
1️⃣常用内建函数表
函数 | 语法 | 描述 | 实例 | 输出结果 |
---|---|---|---|---|
capitalize() | str.capitalize() | 将字符串第一个字符转为大写,其余小写 | "name".capitalize() | "Name" |
center() | str.center(width, fillchar) | 按指定宽度width 居中字符串,fillchar 为填充字符(默认空格) | "name".center(10, '-') | "--name----" |
count() | str.count(sub, beg=0, end=len(str)) | 统计子串sub 在字符串中出现的次数(beg /end 指定范围) | "name".count('a') | 1 |
find() | str.find(sub, beg=0, end=len(str)) | 查找子串sub ,返回首次出现的索引;未找到返回 - 1 | "name".find('m') | 2 |
isalnum() | str.isalnum() | 判断字符串是否仅由字母 / 数字组成(非空) | "python123".isalnum() | True |
join() | str.join(seq) | 以str 为分隔符,将序列seq 的元素拼接为新字符串 | "-".join(["p","y","t","h","o","n"]) | "p-y-t-h-o-n" |
len() | len(str) | 返回字符串的长度(字符个数) | len("name") | 4 |
lower() | str.lower() | 将字符串所有字符转为小写 | "NAME".lower() | "name" |
upper() | str.upper() | 将字符串所有字符转为大写 | "name".upper() | "NAME" |
replace() | str.replace(old, new, max) | 将old 子串替换为new ,max 指定最大替换次数(可选) | "this is is".replace("is", "was", 1) | "thwas is is" |
split() | str.split(sep=None, maxsplit=-1) | 按sep 分隔字符串,返回列表;maxsplit 指定分隔次数(可选) | "n,a,m,e".split(',') | ["n","a","m","e"] |
splitlines() | str.splitlines(keepends=False) | 按换行符(\n/\r/\r\n)分隔,返回列表;keepends=True 保留换行符 | "Line1\nLine2".splitlines() | ["Line1","Line2"] |
startswith() | str.startswith(sub, beg=0, end=len(str)) | 判断字符串是否以sub 开头 | "Hello".startswith("He") | True |
endswith() | str.endswith(sub, beg=0, end=len(str)) | 判断字符串是否以sub 结尾 | "Hello".endswith("lo") | True |
2️⃣综合实例演示:
python
运行
# 1. 大小写与居中
print("hello".capitalize()) # 输出:Hello
print("hello".center(8, '*')) # 输出:*hello**# 2. 查找与替换
str1 = "this is string example....wow!!!"
print(str1.find("example")) # 输出:11("example"的起始索引)
print(str1.replace("is", "was", 2)) # 输出:thwas was string example....wow!!!# 3. 分割与拼接
list1 = "n,a,m,e".split(',')
print(list1) # 输出:['n', 'a', 'm', 'e']
print('-'.join(list1)) # 输出:n-a-m-e# 4. 判断与长度
print("python123".isalnum()) # 输出:True
print(len("python123")) # 输出:9
七、总结与扩展
本文梳理了 Python3 字符串的核心知识:从基础的创建与更新,到转义字符、运算符、三引号、f-string 格式化,再到常用内建函数。这些内容覆盖了初学者 90% 以上的字符串使用场景。
扩展建议:
- 官方文档:若需了解更多字符串方法,可参考 Python 官方文档:String Methods。
- 实战练习:尝试用字符串处理用户输入(如
input()
函数)、文本文件读写(如open()
函数),加深对字符串的理解。 - 注意事项:Python 字符串是 “不可变” 的,所有修改字符串的操作(如
replace()
)都会返回新字符串,而非修改原字符串。