Python字符串转义与格式化输出详解
字符串中的转义字符
在Python中,反斜杠(\)用于表示特殊字符或保留字面值。它有两种主要用途:
- 赋予普通字符特殊含义:如换行、制表等。
- 取消特殊字符的语法意义:使其作为普通文本输出。
\n 换行符
使用 \n 可以实现字符串内的换行输出:
s = "第一行\n第二行"
print(s)
# 输出:
# 第一行
# 第二行
\t 制表符
\t 会在输出时插入一个水平制表距离,通常相当于4个空格:
s = "姓名:\t张三"
print(s) # 姓名: 张三
\b 退格符
\b 会删除前一个可见字符,类似于键盘上的Backspace键:
s = "hello\b"
print(s) # 输出:hell
引号转义
当字符串包含引号时,可用反斜杠进行转义以避免语法错误:
s = '他说:"你好"'
# 或者
s = "她说:\"今天真好\""
print(s) # 她说:"今天真好"
反斜杠本身
要输出单个反斜杠,需使用双反斜杠 \\:
path = "C:\\Users\\Documents"
print(path) # C:\Users\Documents
原始字符串(Raw String)
在字符串前加 r 前缀可创建原始字符串,其中所有字符均被视为字面量:
raw = r"C:\new_data\config\test.txt"
print(raw) # C:\new_data\config\test.txt
这在处理文件路径或正则表达式时非常有用,避免了大量转义操作。
字符串格式化方法
将变量嵌入到字符串模板中是常见的需求。Python提供了多种格式化方式。
% 占位符格式化
这是较早的一种格式化方式,使用 % 操作符和类型标识符:
name = "李四"
age = 28
height = 175.6
msg = "姓名:%s,年龄:%d,身高:%.1f" % (name, age, height)
print(msg)
# 输出:姓名:李四,年龄:28,身高:175.6
常用类型码
| 符号 | 含义 | 示例 |
|---|---|---|
| %s | 字符串 | "%s" % "abc" |
| %d | 整数 | "%d" % 100 |
| %f | 浮点数 | "%.2f" % 3.1415 |
| %x | 十六进制 | "%x" % 255 → ff |
| %% | 百分号 | "完成度:%d%%" % 95 |
格式控制选项
%5d:整数占5位,右对齐%-5d:左对齐%.3f:保留三位小数%8.2f:总宽8位,含两位小数
print("数字:%5d" % 42) # 数字: 42
print("价格:%8.2f" % 9.9) # 价格: 9.90
f-string 格式化(推荐)
从Python 3.6起引入的f-string更直观高效:
name = "王五"
score = 87.666
rank = 3
info = f"选手:{name},得分:{score:.2f},排名:{rank}"
print(info)
# 输出:选手:王五,得分:87.67,排名:3
字段宽度与对齐
支持通过 :< / :> / :^ 控制对齐方式:
<左对齐>右对齐^居中
print(f"{'左':<10} | {'中':^10} | {'右':>10}")
# 输出:左 | 中 | 右
填充字符
可在对齐符号前指定填充字符:
title = "公告"
banner = f"{title:=^20}"
print(banner) # ========公告========
动态数据处理
结合外部数据源进行批量格式化输出:
# 模拟读取Excel数据
data = [
("Alice", 25, 168),
("Bob", 30, 175),
("Charlie", 35, 180)
]
for name, age, height in data:
line = f"姓名:{name:*^10}, 年龄:{age:<3}, 身高:{height}cm"
print(line)
# 输出示例:
# 姓名:***Alice***, 年龄:25 , 身高:168cm
这种方式适用于生成报表、日志记录等需要统一排版的场景。