Python基础 : 字符串格式化输出

Python基础 : 字符串格式化输出


一、知识点详解

1.1 f-string(推荐)

基础用法

name = "小王"
age = 25
print(f"{name}今年{age}岁了.")  # 小王今年25岁了.

支持表达式

print(f"10年后年龄:{age + 10}")  # 10年后年龄:35

格式控制符

符号功能示例输出说明
:<n左对齐(宽度n)f"{'Hi':<5}"Hi HI后补3个空格
:>n右对齐(宽度n)f"{3.14:>7}" 3.14前补3个空格
:^n居中对齐(宽度n)f"{'OK':^5}"OK 左右分别补1、2个空格
:.nf保留n位小数f"{3.1415926:.2f}"3.14四舍五入保留两位小数
:,千位分隔符f"{123456789:,}"123,456,789每三位用逗号分隔
:.n%百分比格式化f"{0.66666:.2%}"66.67%转换为百分比并保留两位

使用说明

1.对齐方式

  • 左对齐用<,右对齐用>,居中对齐用^,后接宽度值,参考上表

2.填充字符

  • 在对齐符号前添加填充字符(默认为空格),例如~*
print(f"{'text':~<10}")
# 左对齐,宽度为10,不足部分用~填充
# 输出:text~~~~~~
print(f"{'text':*^10}")
# 居中对齐,宽度为10,两侧用*填充
# 输出:***text***

3.组合使用

  • 格式为[填充字符][对齐符号][宽度],例如:f"{'text':@>10}"表示右对齐,宽度10,左侧用@填充
print(f"{'text':@>10}")
# 右对齐,宽度10,左侧用@填充
# 输出:@@@@@@text

注意事项 :

  • 填充字符限制:只能使用单个字符(如 *-),多字符会报错。
  • 数据长度超宽:若数据长度超过指定宽度,按原样输出(不截断)。
  • 支持表达式 : 格式说明符内可嵌入变量或表达式 。
symbol = "#"
print(f"{'text':{symbol}^10}")
# 输出:###text###

1.2 format()方法

位置参数与关键字参数

print("{}的{}售价是¥{:.1f}".format("超市", "苹果", 6.5))  # 超市的苹果售价是¥6.5
print("{shop}的{fruit}售价是¥{price:.1f}".format(shop="超市", fruit="苹果", price=6.5))

格式控制符(与f-string类似):

print("{0:*^10}".format("VIP"))  # 输出: ***VIP***

1.3 %格式化(传统方法,了解即可)

  • 占位符类型
占位符类型示例输出
%s字符串"Name: %s" % "小美""Name: 小美"
%d整数"Age: %d" % 25"Age: 25"
%f浮点数"Price: %.2f" % 3.1415"Price: 3.14"
print("日期:%d-%02d-%02d" % (2024, 3, 5))  # 日期:2024-03-05(02d表示补零到2位)

二、说明示例

2.1 商品价格表对齐

products = [("A001", "笔记本", 15.5), ("A002", "钢笔", 8.0)]
print(f"{'商品代码':<10}{'名称':<10}{'价格':>10}")
print("-" * 30)
for code, name, price in products:
    print(f"{code:<10}{name[:4]:<10}{price:>7.2f}")
# 输出:
# 商品代码    名称          价格
# ------------------------------
# A001      笔记本      ¥  15.50
# A002      钢笔        ¥   8.00

2.2 动态生成报告

# 用户输入数据
title = input("报告标题:")
author = input("作者:")
content = input("内容摘要:")

# 使用format()生成模板
report = """
{title_line}
{title:^30}
{title_line}

作者:{author}
内容:
{content}
""".format(
    title_line="=" * 30,
    title=title.upper(),
    author=author,
    content=content
)
print(report)

三、知识点总结

  1. f-string(推荐)
  • 简洁直观,通过{}插入变量或表达式,支持对齐、填充、小数保留、千位分隔符、百分比等格式控制,填充字符需为单个字符,数据超宽时原样输出。
  1. format()方法
  • 可通过位置参数或关键字参数格式化字符串,格式控制符与f-string类似,适用于动态参数或需要复用模板的场景。
  1. %格式化(传统方法)
  • 使用占位符(如%s%d%f)进行格式化,需注意占位符类型与数据匹配,目前较少推荐,以了解为主。
  1. 格式控制通用规则
  • 对齐符号(<左对齐、>右对齐、^居中)后接宽度,可在对齐符号前添加单个填充字符,数字格式化支持千位分隔符(,)和百分比(%.n%)等。

四、扩展知识

1.多行f-string:直接在三引号字符串中使用{}插入变量,方便生成多行文本。

name = "小美"
message = f"""
亲爱的{name}:
  您的订单已发货。
"""
print(message)

2.格式规范迷你语言:通过动态指定格式字符串(如>{width},{.nf})灵活控制输出格式。

value = 12345.6789
spec = ">20,.2f"  # 右对齐宽度20,千位分隔符,保留2位小数
print(f"数值:{value:{spec}}")  # 输出:数值:         12,345.68

五、知识点考察题

x = 'a1'
s = f"x is {x} "
s = s.upper()
s.strip()
a1 = s + '?'
print(a1)

上面代码输出结果为( )

  • A. X IS a1?
  • B. X IS A1 ?
  • C. X IS a1 ?
  • D. XISA1?

~~ 关注 公众号「安于欣」→ 获取更多内容 ~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值