当前位置:首页>python>Python 字符串格式化占位符 + 正则表达式(re) 超详细完整版

Python 字符串格式化占位符 + 正则表达式(re) 超详细完整版

  • 2026-10-11 08:29:47
Python 字符串格式化占位符 + 正则表达式(re) 超详细完整版

一、字符串格式化中的 占位符 详细用法

你问的:如何在字符串格式化中使用占位符
我把三种格式化里的所有占位符、格式规则一次性讲透。

1. 老式格式化:% 占位符(必须掌握)

常用占位符表(背会就够用)

占位符
作用
%s
字符串(万能)
%d
整数
%f
浮点数
%.2f
保留 2 位小数
%x
十六进制

用法

name = "小明"
age = 18
score = 95.1234

# 单个占位符
print("姓名:%s" % name)

# 多个占位符
print("姓名:%s,年龄:%d,分数:%.2f" % (name, age, score))

重点:

  • • %s 万能,任何类型都能放
  • • 多个变量必须用 元组 () 包裹

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. 元字符(匹配内容)

符号
含义
\d
匹配 数字 0-9
\w
匹配 字母/数字/下划线
\s
匹配 空白(空格、换行、制表符)
.
匹配 任意字符(除换行)
[abc]
匹配 a 或 b 或 c
[^abc]
匹配 不是 a/b/c 的字符

2. 量词(匹配数量)

量词
含义
*
匹配 0 次或多次
+
匹配 1 次或多次
?
匹配 0 次或 1 次
{n}
匹配 n 次
{n,m}
匹配 n ~ m 次
{n,}
匹配 至少 n 次

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)

📝 本章终极总结

字符串格式化占位符

  1. 1. %s 字符串 %d 整数 %f 小数
  2. 2. {} format 占位符
  3. 3. f"{变量}" 最简洁好用

正则表达式(re 模块)

  • • \d 数字
  • • \w 字母数字下划线
  • • \s 空白
  • • . 任意字符
  • • * 任意次
  • • + 至少一次
  • • ? 0/1 次
  • • {n,m} n~m 次
  • • findall 提取所有
  • • sub 替换
  • • 正则一定要加 r""

最新文章

随机文章