Python【3】:格式化输出


前言

在做题与实际应用中,经常会出现需要格式化(输出)字符串的情况,本文主要介绍 Python 格式化字符串的方法


1. 通过 % \% % 实现

1.1. 语法

Python 支持格式化字符串的输出,最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。

在字符串内部,% 后紧跟占位符,有几个占位符,就需要几个变量或者值。待输出的变量和值需要用括号括起来,且顺序需要与占位符一一对应。如果只有一个 % 和占位符,括号可以省略。

  • 示例:
print("%s is %d years old." %('Horace', 20))
  • 输出结果
Horace is 20 years old.

1.2. 常见格式化符号

  • %c
    • 格式化字符及其 ASCII
  • %s
    • 格式化字符串
    • 可以将任何数据转换为字符串
  • %d
    • 格式化整数
  • %u
    • 格式化无符号整型
  • %o
    • 格式化无符号八进制数
  • %x
    • 格式化无符号十六进制数
  • %X
    • 格式化无符号十六进制数(大写)
  • %f
    • 格式化浮点数字,可指定小数点后的精度
  • %e
    • 用科学计数法格式化浮点数
  • %E
    • 作用同 %e,用科学计数法格式化浮点数
  • %g
    • %f%e 的简写
  • %G
    • %F%E 的简写
  • %p
    • 用十六进制数格式化变量的地址

1.3. 格式化操作符辅助指令

  • *
    • 定义宽度或者小数点精度
  • -
    • 用做左对齐
  • +
    • 在正数前面显示加号 ( + )
  • <sp>
    • 在正数前面显示空格
  • #
    • 在八进制数前面显示零 ('0'),在十六进制前面显示 '0x' 或者 '0X' (取决于用的是’x’还是’X’)
  • 0
    • 显示的数字前面填充 '0' 而不是默认的空格
  • %
    • '%%' 输出一个单一的 '%'
  • (var)
    • 映射变量(字典参数)
  • m.n.
    • m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

部分实例

a=5
print(10)
print("%d"%a)
print("%2d"%a)		#输出时按照2个空间大小输出,默认为右对齐
print("%-2d"%a)		#2个空间大小,因为d前面是-号,所以左对齐
print("%02d"%a)		#2个空间大小输出,不够的用0补齐
print("%-02d"%a)	#2个空间大小输出,不够的用0补齐,左对齐

2. 通过 format() 函数实现

2.1. 语法

新增的一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。基本语法是通过 {}: 来代替以前的 %format 函数可以接受不限个参数,位置可以不按顺序。

2.2. 用法

2.2.1. 基本用法

  • 不设置参数
print("{} {}".format("hello", "world"))			# 不设置指定位置,按默认顺序
print("{0} {1}".format("hello", "world"))		# 设置指定位置
print("{1} {0} {1}".format("hello", "world"))	# 设置指定位置

# 输出
# 'hello world'
# 'hello world'
# 'world hello world'
  • 设置参数
print("姓名:{name}, 年龄 {age}".format(name="Horace", age="20 years old"))

# 输出
# 姓名:Horace, 年龄 20 years old
  • 传入对象
class AssignValue(object):
    def __init__(self, value):
        self.value = value
my_value = AssignValue(6)

print('value 为: {0.value}'.format(my_value))  # "0" 是可选的

# 输出
# value 为: 6

2.2.2. 数字格式化

  • 常见数字格式化
数字格式输出描述
3.1415926{:.2f}3.14保留小数点后两位
3.1415926{:+.2f}+3.14带符号保留小数点后两位
-1{:-.2f}-1.00带符号保留小数点后两位
2.71828{:.0f}3不带小数
5{:0>2d}05数字补零(填充左边, 宽度为 2)
5{:x<4d}5xxx数字补 x(填充右边, 宽度为 4)
1000000{:,}1,000,000以逗号分隔的数字格式
0.25{:.2%}25.00%百分比格式
1000000000{:.2e}1.00e+09指数记数法
13{:>10d}…13右对齐(默认,宽度为 10,表格默认居中,用 ‘.’ 代表空格)
13{:<10d}13…左对齐(宽度为 10,表格默认居中,用 ‘.’ 代表空格)
13{:^10d}…13…中间对齐(宽度为 10,表格默认居中,用 ‘.’ 代表空格)
  • 结合进制的数字格式化
    • '{:b}'.format(11)
    • '{:d}'.format(11)
    • '{:o}'.format(11)
    • '{:x}'.format(11)
    • '{:#x}'.format(11)
    • '{:#X}'.format(11)
  • 总结
    • ^, <, > 分别是居中、左对齐、右对齐,后面带宽度
    • : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充
    • + 表示在正数前显示 +,负数前显示 -
    • (空格)表示在正数前加空格
    • bdox 分别是二进制、十进制、八进制、十六进制
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zzzyzh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值