首页 / Python3 入门教程 / 字符串基础

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  '
Note

f-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 字符串」等,改写后所得。