Python3 字符串
引号与转义
单引号 '...' 与双引号 "..." 等价;三引号可以跨行书写,常用于多行文本;特殊字符需要用反斜杠转义:
s1 = 'hello'
s2 = "world"
s3 = """第一行
第二行"""
print(s1, s2) # 输出:hello world
print(s3) # 输出两行文本
print('他说:"你好"') # 输出:他说:"你好"
常用转义符:
| 转义符 | 含义 | 转义符 | 含义 |
|---|---|---|---|
| \n | 换行 | \t | 制表符 |
| \ | 反斜杠 | " | 双引号 |
| ' | 单引号 | \r | 回车 |
索引与切片
下标从 0 开始,负数表示从尾部倒数;切片 s[start:stop:step] 含头不含尾:
s = "python"
print(s[0], s[-1]) # 输出:p n,-1 表示最后一个字符
print(s[0:3]) # 输出:pyt,取下标 0~2
print(s[1:5:2]) # 输出:yh,步长为 2
print(s[::-1]) # 输出:nohtyp,负步长实现反转
不可变性
字符串一旦创建就不可修改,所有"改动"其实都返回新字符串,原字符串保持不变:
s = "abc"
# s[0] = "x" # 报错:TypeError,字符串不能按索引赋值
print(s.upper()) # 输出:ABC,upper 返回新字符串
print(s) # 输出:abc,原字符串不变
常用方法
大小写、去空白、分割、连接、查找、替换等常用方法一应俱全:
print("Hello".upper(), "hello".lower()) # 输出:HELLO hello
print(" hi ".strip()) # 输出:hi,去除两端空白
print("a,b,c".split(",")) # 输出:['a', 'b', 'c']
print("-".join(["2024", "01", "01"])) # 输出:2024-01-01
print("banana".find("na")) # 输出:2,找不到返回 -1
print("banana".count("na")) # 输出:2,子串出现次数
print("Hello".startswith("He")) # 输出:True
print("I love Python".replace("Python", "Java")) # 输出:I love Java
拼接、重复与长度
用 + 拼接、* 重复,len() 返回字符个数:
print("Py" + "thon") # 输出:Python
print("ab" * 3) # 输出:ababab
print(len("hello")) # 输出:5
print(len("中文")) # 输出:2,中文字符也按 1 个字符计
格式化:%、format 与 f-string
三种主流写法,推荐最简洁直观的 f-string(Python 3.6+):
name, age, score = "Tom", 18, 92.5
print("%s 今年 %d 岁" % (name, age)) # % 占位符
print("{} 今年 {} 岁".format(name, age)) # format 方法
print(f"{name} 今年 {age} 岁,得分 {score}") # f-string
# 三行输出分别为:Tom 今年 18 岁 / Tom 今年 18 岁 / Tom 今年 18 岁,得分 92.5
f-string 的花括号里可以直接写表达式与格式控制:
print(f"3 × 7 = {3 * 7}") # 输出:3 × 7 = 21
print(f"{92.5:.1f}") # 输出:92.5,控制小数位数
字符串是 Python 中使用最频繁的类型:会引号与转义、索引切片、常用方法,再配合 f-string 格式化,即可胜任绝大多数文本处理任务。