一、%格式化

实例代码:

print("我叫 %s, 今年 %u 岁了..." % ('dycc', 99))
# 我叫 dycc, 今年 99 岁了...

python字符串格式化符号:

符号

描述

%c

格式化字符及其ASCII码

%s

格式化字符串

%d

格式化整数

%u

格式化无符号整数

%o

格式化无符号八进制数

%x

格式化无符号十六进制数

%X

格式化无符号十六进制数(大写)

%f

格式化浮点数,可指定小数点后精度

%e

用科学表示法格式化浮点数

%E

同 %e

%g

%f 和 %e 的简写

%G

%f 和 %E 的简写

%p

用十六进制数格式化变量的地址

二、format格式化

str.format()是 python2.6 新增的一种格式化字符串的函数,增强了格式化字符串的功能,基本语法是通过{}{:}来代替以前的%

format函数可以接受不限个参数,位置可以不按顺序:

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

也可以设置参数:

print("姓名:{name}, 职业:{pos}".format(name = '阿离', pos = 'adc'))

# 通过字典设置参数
info_dict = {"name": "吕布", "pos": "top"}
print("姓名:{name}, 职业:{pos}".format(**info_dict))

# 通过列表索引设置参数, '0'是必须的
info_list = ["甄姬", "mid"]
print("姓名:{0[0]}, 职业:{0[1]}".format(info_list))

"""
姓名:阿离, 职业:adc
姓名:吕布, 职业:top
姓名:甄姬, 职业:mid
"""

也可以向str.format()传入对象

class StrFormat(object):
    def __init__(self, value):
        self.value = value

str_format = StrFormat(99)
print("value = {0.value}".format(str_format)) # '0'可省略
# value = 99

数字格式化:

数字

格式

输出

描述

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)

10

{:x<4d}

10xx

数字补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)

11

'{:b}'.format(11) '{:d}'.format(11) '{:o}'.format(11) '{:x}'.format(11) '{:#x}'.format(11) '{:#X}'.format(11)

1011 11 13 b 0xb 0XB

进制

^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。

+ 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格

b、d、o、x 分别是二进制、十进制、八进制、十六进制。

此外我们可以使用大括号 {} 来转义大括号,如下实例:

print ("{} 对应的位置是 {{0}}".format("hello"))
# hello 对应的位置是 {0}

三、f-string格式化

f-string是 python3.6之后版本添加的,称之为字面量格式化字符串,用起来较前两种简单,形式也更简洁