文章目录

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



前言

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


1. 通过 Python每次print数字都有b python print %s_字符串

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 分别是二进制、十进制、八进制、十六进制