Python【3】:格式化输出

文章目录

  • 前言
  • 1. 通过 % \% % 实现
    • 1.1. 语法
    • 1.2. 常见格式化符号
    • 1.3. 格式化操作符辅助指令
  • 2. 通过 format() 函数实现
    • 2.1. 语法
    • 2.2. 用法
      • 2.2.1. 基本用法
      • 2.2.2. 数字格式化


前言

在做题与实际应用中,经常会出现需要格式化(输出)字符串的情况,本文主要介绍 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. 格式化操作符辅助指令

  • *
    • 定义宽度或者小数点精度
  • -
    • 用做左对齐
  • +
    • 在正数前面显示加号 ( + )
    • 在正数前面显示空格
  • #
    • 在八进制数前面显示零 ('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 分别是二进制、十进制、八进制、十六进制

你可能感兴趣的:(#,语法,python,开发语言)