文章目录
- 前言
- 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. 格式化操作符辅助指令
*
- 定义宽度或者小数点精度
-
- 用做左对齐
+
- 在正数前面显示加号 ( + )
<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)
- 总结
^, <, >
分别是居中、左对齐、右对齐,后面带宽度:
号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充+
表示在正数前显示+
,负数前显示-
b
、d
、o
、x
分别是二进制、十进制、八进制、十六进制