Python3 入门教程
字符串基础
本教程共 70 篇 · 第 10 篇 · 更新于 2026-07-22 · 约 3 分钟阅读
PythonPython3 入门教程Python 字符串字符串切片f-string转义字符
10. 字符串基础
本节目标:掌握字符串的创建、索引、切片和格式化输出,能灵活处理文本数据。
创建字符串
Python 字符串用单引号或双引号包起来,效果一样:
name = 'Alice'
greeting = "Hello"
如果字符串内部有引号,可以换另一种引号包裹,或者用反斜杠转义:
s1 = "I'm OK" # 内含单引号,用双引号包裹
s2 = 'He said "Hi"' # 内含双引号,用单引号包裹
s3 = 'I\'m OK' # 用反斜杠转义
多行字符串用三引号:
text = """第一行
第二行
第三行"""
转义字符
反斜杠 \ 用来转义特殊字符:
| 转义序列 | 含义 |
|---|---|
\\ | 反斜杠本身 |
\n | 换行 |
\t | 制表符(Tab) |
\r | 回车 |
\' | 单引号 |
\" | 双引号 |
如果字符串里有很多反斜杠(比如 Windows 路径、正则表达式),可以用 r 前缀表示「原始字符串」:
>>> path = r"C:\Users\Alice\Documents"
>>> print(path)
C:\Users\Alice\Documents
>>> print(r"hello\nworld") # \n 不会转义成换行
hello\nworld
Tip
r是 raw 的缩写。原始字符串在写正则表达式时尤其有用,能少写一半反斜杠。
索引与切片
字符串可以看作字符的序列,每个字符都有编号:
P y t h o n
0 1 2 3 4 5
-6 -5 -4 -3 -2 -1
>>> s = "Python"
>>> s[0] # 第一个字符
'P'
>>> s[-1] # 最后一个字符
'n'
>>> s[2:5] # 索引 2 到 4(左闭右开)
'tho'
>>> s[:3] # 从头开始到索引 2
'Pyt'
>>> s[3:] # 从索引 3 到末尾
'hon'
>>> s[:] # 整个字符串的拷贝
'Python'
切片语法是 s[start:end:step]:
>>> s = "abcdef"
>>> s[::2] # 每隔一个取一个
'ace'
>>> s[::-1] # 步长为 -1,倒序
'fedcba'
Warning字符串是不可变的。不能通过索引修改单个字符:
>>> s = "hello" >>> s[0] = "H" TypeError: 'str' object does not support item assignment要「修改」字符串,只能创建新的字符串。
字符串拼接与重复
>>> "Hello" + " " + "World"
'Hello World'
>>> "Ha" * 3
'HaHaHa'
相邻的字符串字面量会自动拼接:
>>> text = "Python " "is " "great"
>>> text
'Python is great'
f-string 格式化(推荐)
Python 3.6+ 引入的 f-string 是最简洁、最推荐的字符串格式化方式:
name = "Alice"
age = 25
print(f"我叫 {name},今年 {age} 岁")
# 输出:我叫 Alice,今年 25 岁
可以在花括号里写表达式:
>>> pi = 3.14159
>>> f"圆周率约等于 {pi:.2f}" # 保留两位小数
'圆周率约等于 3.14'
>>> f"100 的十六进制是 {100:x}" # 格式化整数
'100 的十六进制是 64'
>>> f"{10:>5}" # 宽度 5,右对齐
' 10'
>>> f"{10:<5}" # 宽度 5,左对齐
'10 '
>>> f"{10:^5}" # 宽度 5,居中
' 10 '
Notef-string 前面加
=可以同时显示表达式和结果,调试时很方便:>>> x = 10 >>> f"{x = }" 'x = 10' >>> f"{x * 2 = }" 'x * 2 = 20'
其他格式化方式(了解)
除了 f-string,Python 还支持另外两种格式化方式,遇到旧代码时能看懂就行:
% 格式化(C 风格,已不推荐):
>>> "Hello, %s! You are %d years old." % ("Alice", 25)
'Hello, Alice! You are 25 years old.'
str.format() 方法:
>>> "Hello, {}! You are {} years old.".format("Alice", 25)
'Hello, Alice! You are 25 years old.'
>>> "Hello, {name}! You are {age} years old.".format(name="Alice", age=25)
'Hello, Alice! You are 25 years old.'
新项目直接用 f-string,更直观、更快。
来源:参考了 runoob「Python3 字符串」、liaoxuefeng「字符串和编码」、w3cschool「Python3 字符串」等,改写后所得。