一、字符串格式化中的 占位符 详细用法
你问的:如何在字符串格式化中使用占位符
我把三种格式化里的所有占位符、格式规则一次性讲透。
1. 老式格式化:% 占位符(必须掌握)
常用占位符表(背会就够用)
用法
name = "小明"
age = 18
score = 95.1234
# 单个占位符
print("姓名:%s" % name)
# 多个占位符
print("姓名:%s,年龄:%d,分数:%.2f" % (name, age, score))
重点:
2. format 格式化:{} 占位符
三种写法
# 1. 顺序占位
print("姓名:{},年龄:{}".format("小红", 20))
# 2. 下标占位
print("{0} + {1} = {2}".format(10, 20, 30))
# 3. 关键字占位(最清晰)
print("姓名:{name},年龄:{age}".format(name="小刚", age=19))
格式控制
# 保留 2 位小数
print("{:.2f}".format(3.14159))
# 整数补零(2 位)
print("{:02d}".format(5)) # 05
3. f-string 占位符(Python 3.6+ 最强)
直接放变量 / 表达式
name = "小李"
age = 21
print(f"姓名:{name},年龄:{age}")
# 表达式
print(f"明年:{age + 1} 岁")
# 保留小数
score = 88.123
print(f"分数:{score:.2f}")
二、正则表达式 超详细基础(re 模块)
1. 什么是正则?
2. Python 使用正则:re 模块
import re
三、最常用正则符号(新手必背)
1. 元字符(匹配内容)
2. 量词(匹配数量)
3. 边界
四、最常用的 4 个 re 函数(必须会)
1. re.findall() → 查找所有匹配(最常用)
import re
text = "我的电话:13812345678,另一个:13999999999"
# 提取所有手机号(11位数字)
result = re.findall(r"\d{11}", text)
print(result) # ['13812345678', '13999999999']
2. re.search() → 查找第一个匹配
res = re.search(r"\d{11}", text)
if res:
print(res.group()) # 13812345678
3. re.match() → 从开头匹配
re.match(r"^\d", "123abc") # 成功
re.match(r"^\d", "abc123") # 失败
4. re.sub() → 替换( like 字符串 replace)
text = "我是 123 号"
new_text = re.sub(r"\d+", "***", text)
print(new_text) # 我是 *** 号
五、正则经典示例(一看就会)
1. 匹配所有数字
re.findall(r"\d+", "abc123def456")
# ['123','456']
2. 匹配邮箱
re.findall(r"\w+@\w+\.\w+", "邮箱:test@qq.com")
3. 匹配网址
re.findall(r"https?://\S+", "网址 https://www.baidu.com")
4. 提取中文
re.findall(r"[\u4e00-\u9fa5]+", "Hello 你好 Python 世界")
六、量词区别(超级重点)
* → 0 次或多次(可以没有)
\d* → 匹配 0 个数字 或 多个数字
+ → 1 次或多次(必须有)
\d+ → 必须有数字,至少 1 个
? → 0 或 1 个(可有可无)
https? → 匹配 http 或 https
{n,m} → 区间次数
\d{4,6} → 4~6 位数字
七、原始字符串 r""(正则必须加)
正则里大量使用 \
加 r 防止转义出错。
# 正确
re.findall(r"\d+", text)
# 错误(容易出问题)
re.findall("\d+", text)
📝 本章终极总结
字符串格式化占位符
正则表达式(re 模块)