当前位置:首页>python>从零开始学python-字符串格式化

从零开始学python-字符串格式化

  • 2026-08-28 08:53:03
从零开始学python-字符串格式化

Hi~新朋友,记得点上面蓝字(网虫root)关注哟~

前言:

   主要分享的是Python版本为Python3的内容。

一、 传统的 % 格式化方法

这是Python早期版本中最常用的字符串格式化方式,使用%操作符进行格式化。

🚀常用格式化符号列表

二、格式化符号详细说明与示例

1. 字符串格式化 (%s, %r)

① %s 字符串格式化name = "张三"print("姓名:%s" % name)  # 输出:姓名:张三② %r 使用repr()表示print("原始表示:%r" % "Hello\nWorld")  # 输出:原始表示:'Hello\nWorld'③ 比较%s和%r的区别text = "特殊字符:\t制表符"print("使用%%s: %s" % text)  # 输出:使用%s: 特殊字符:    制表符print("使用%%r: %r" % text)  # 输出:使用%r: '特殊字符:\t制表符'

2. 字符格式化 (%c)

① 使用ASCII码print("ASCII 65是:%c" % 65)  # 输出:ASCII 65是:Aprint("ASCII 97是:%c" % 97)  # 输出:ASCII 97是:a② 使用Unicode码print("Unicode 20013:%c" % 20013)  # 输出:Unicode 20013:中③ 直接使用字符print("字符:%c" % 'B')  # 输出:字符:B

3. 整数格式化 (%d, %i, %u)

① 十进制整数num = 123print("十进制:%d" % num)  # 输出:十进制:123print("有符号整数:%i" % num)  # 输出:有符号整数:123print("无符号整数:%u" % num)  # 输出:无符号整数:123② 处理负数negative = -42print("负数:%d" % negative)  # 输出:负数:-42print("无符号负数:%u" % negative)  # 输出:无符号负数:-42③ 宽度和填充print("宽度8:%8d" % 123)  # 输出:宽度8:     123print("宽度8补0:%08d" % 123)  # 输出:宽度8补0:00000123

4. 八进制和十六进制格式化 (%o, %x, %X)

decimal_num = 255① 八进制表示print("十进制 %d 的八进制是:%o" % (decimal_num, decimal_num))  # 输出:十进制 255 的八进制是:377print("带前缀的八进制:%#o" % decimal_num)  # 输出:带前缀的八进制:0o377② 十六进制表示(小写)print("十六进制(小写):%x" % decimal_num)  # 输出:十六进制(小写):ffprint("带前缀的十六进制(小写):%#x" % decimal_num)  # 输出:带前缀的十六进制(小写):0xff③ 十六进制表示(大写)print("十六进制(大写):%X" % decimal_num)  # 输出:十六进制(大写):FFprint("带前缀的十六进制(大写):%#X" % decimal_num)  # 输出:带前缀的十六进制(大写):0XFF④ 使用不同数值for i in [10, 16, 32, 100, 255]:    print("十进制:%3d → 八进制:%4o → 十六进制:%4x" % (i, i, i))

5. 浮点数格式化 (%f, %F, %e, %E, %g, %G)

import mathpi = math.pilarge_num = 1234567.89small_num = 0.000123456① %f 浮点数print("圆周率:%f" % pi)  # 输出:圆周率:3.141593print("保留2位小数:%.2f" % pi)  # 输出:保留2位小数:3.14print("宽度10,保留3位:%10.3f" % pi)  # 输出:宽度10,保留3位:     3.142② %e 科学计数法(小写)print("科学计数法(小写):%e" % large_num)  # 输出:科学计数法(小写):1.234568e+06print("科学计数法(小写),保留3位小数:%.3e" % small_num)  # 输出:科学计数法(小写),保留3位小数:1.235e-04③ %E 科学计数法(大写)print("科学计数法(大写):%E" % large_num)  # 输出:科学计数法(大写):1.234568E+06④ %g 自动选择格式print("自动格式(小写):%g" % large_num)  # 输出:自动格式(小写):1.23457e+06print("自动格式(小写):%g" % 123.456)    # 输出:自动格式(小写):123.456print("自动格式(小写):%g" % 0.000123)   # 输出:自动格式(小写):0.000123⑥ %G 自动选择格式(大写)print("自动格式(大写):%G" % large_num)  # 输出:自动格式(大写):1.23457E+06

6. 百分比符号 (%%)

① 输出%字符本身discount = 15print("折扣:%d%%" % discount)  # 输出:折扣:15%② 浮点数百分比increase = 23.5print("增长率:%.1f%%" % increase)  # 输出:增长率:23.5%③ 多个百分比rates = [10, 25, 50, 75]for rate in rates:    print("进度:%d%%" % rate)

三、格式化操作符辅助指令

除了基本格式化符号,还可以使用以下辅助指令:

① 对齐和填充示例text = "Python"print("左对齐:|%-10s|" % text)      # 输出:左对齐:|Python    |print("右对齐:|%10s|" % text)       # 输出:右对齐:|    Python|print("0填充:|%010d|" % 123)       # 输出:0填充:|0000000123|② 符号显示print("显示正号:%+d" % 42)          # 输出:显示正号:+42print("显示正号:%+d" % -42)         # 输出:显示正号:-42print("正数前空格:|% d|" % 42)     # 输出:正数前空格:| 42|print("负数正常:|% d|" % -42)      # 输出:负数正常:|-42|③ 使用#显示进制前缀print("带前缀八进制:%#o" % 10)     # 输出:带前缀八进制:0o12print("带前缀十六进制:%#x" % 255)  # 输出:带前缀十六进制:0xff④ 使用*从参数读取宽度和精度width = 12precision = 3value = 123.456789print("动态格式:%*.*f" % (width, precision, value))# 输出:动态格式:     123.457

四、str.format() 方法

Python 2.6 引入了str.format()方法,提供了更强大的格式化功能。

基础用法

① 位置参数print("{}今年{}岁,来自{}。".format("王明", 28, "北京"))② 索引参数print("{2}位于{1},是{0}的首都。".format("中国", "华北地区", "北京"))③ 关键字参数print("姓名:{name},年龄:{age},职业:{job}".format(    name="张伟", age=35, job="工程师"))

五、f-string(格式化字符串字面值)

  • Python 3.6 引入了f-string,这是目前最简洁、高效的字符串格式化方法。

  • f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去

基础用法

① 简单变量插入username = "刘洋"login_time = 12print(f"用户{username}于{login_time}:00登录系统")② 表达式计算a, b = 5, 3print(f"{a} + {b} = {a + b}")print(f"{a} × {b} = {a * b}")③ 函数调用def get_temperature():    return 22.5print(f"当前温度:{get_temperature()}°C")

六、各种格式化方法对比

# 相同功能的三种实现方式product = "智能手机"brand = "小米"price = 2999.99discount = 0.15# 1. % 格式化print("%s品牌的%s原价%.2f元,折扣%.0f%%" % (brand, product, price, discount*100))# 2. str.format()print("{0}品牌的{1}原价{2:.2f}元,折扣{3:.0%}".format(brand, product, price, discount))# 3. f-stringprint(f"{brand}品牌的{product}原价{price:.2f}元,折扣{discount:.0%}")

总结

  • Python提供了多种字符串格式化方法,各有优缺点:

  • % 格式化:兼容性好,适合简单的格式化需求,但在复杂场景下不够灵活

  • str.format():功能强大,支持复杂格式化,语法清晰

  • f-string:Python 3.6+推荐使用,语法简洁,执行效率高,可读性好

【微语】每个平凡的日子,都值得被珍惜。

网虫root

期待你的

分享

点赞

在看

最新文章

随机文章