python字符串格式化常用方法

python3.6以上,字符串格式化方式。

num = 3.1415926
f_str = f'圆周率为 {num:*^15.4f}'   
print(f_str)                     

输出为:

圆周率为 ****3.1416*****

说明:
* :为填充的字符;
^ :为居中对齐;
15 : 格式化后字符串长度为15个字符;
.4f:浮点数的精度保留4位小数(自动四舍五入)。


以下是一些具体细节说明:

# 1、格式化“精度”
#    1.1 num是浮点数时,且后面不加类型的情况下。
num = 3.1415926
f_str = f'圆周率为 {num:.4}'    # 点号后面的数为保留的数字个数(整数个数+小数个数),这里既表示取四个数字。
print(1, f_str)               # >>> 圆周率为 3.142(会四舍五入)

#    1.2 num是浮点数时,且后面加 浮点型f 的情况下。
num = 3.1415926
f_str = f'圆周率为 {num:.4f}'    # 点号后面的数为保留的小数个数,这里既表示保留4个小数。
print(2, f_str)                # >>> 圆周率为 3.1416(四舍五入保留4位小数,和前面的整数位数无关)

#    1.3 num是整数时, 后面一定要加 f 使其变为浮点型,否则报错。
num = 31415926
f_str = f'圆周率为 {num:.4f}'    # 点号后面的数为保留的小数个数,这里既表示保留4个小数。
print(3, f_str)                # >>> 圆周率为 31415926.0000(保留4位小数,后面都是0)

f_str = f'圆周率为 {num:,.4f}'   # 加入 千位符 逗号,也可以是英文的下划线"_"。
print(3, f_str)                 # >>> 圆周率为 31,415,926.0000

#    1.4 num是字符串的情况下,精度只会从开始取多少个字符个数(不能使用 f 使其转为浮点型)。
num = '3.1415926'
f_str = f'圆周率为 {num:.5}'     # 点号后面的数为保留的字符个数(小数点也算一个字符),这里既表示取5个字符。
# f_str = f'圆周率为 {num:.5f}'  # 会报错:ValueError:
print(4, f_str)                 # >>> 圆周率为 3.141 (不会四舍五入)


# 2、格式化“填充”
#   2.1 num是数字的情况下
num = 3.14
f_str = f'圆周率为{num:10}。'     # 数字时填充内容是在左边。
print(0, f_str)                 # >>> 圆周率为      3.14。 (前面填充了6个空格)

#   2.2 num是字符串的情况下
num = "3.14"
f_str = f'圆周率为{num:10}。'     # 字符串时填充内容是在右边。
print(1, f_str)                 # >>> 圆周率为3.14      。 (后面填充了6个空格)

#   2.3 自定义填充内容
num = "3.14"
f_str = f'圆周率为{num:^10}。'     # ^ 居中填充(不区分数字还是字符串)。
print(2, f_str)                  # >>> 圆周率为   3.14   。 (前后各填充3个空格)

num = 3.14
f_str = f'圆周率为{num:<10}。'     # ^ 在右边填充空格(不区分数字还是字符串)。
print(3, f_str)                  # >>> 圆周率为3.14      。 (右边填充6个空格)

num = 3.14
f_str = f'圆周率为{num:>10}。'     # ^ 在左边填充空格(不区分数字还是字符串)。
print(4, f_str)                  # >>> 圆周率为      3.14。 (左边填充6个空格)

# 不带 类型f
num = 3.14
f_str = f'圆周率为{num:*>10.4}。'     # ^ 在左边填充*(不区分数字还是字符串)。
print(5, f_str)                     # >>> 圆周率为******3.14。 (左边填充6个*)

# 带 类型f
num = 3.14
f_str = f'圆周率为{num:*>10.4f}。'     # ^ 在左边填充*(不区分数字还是字符串)。
print(6, f_str)                      # >>> 圆周率为****3.1400。 (左边填充4个*,小数位数增加00)

# 转为二进制
num = 314
f_str = f'圆周率为{num:b}。'
print(7, f_str)                # >>> 圆周率为100111010。
# f_str = f'圆周率为{num:#b}。'   # 如果为b之前加#,则显示为 0b100111010,既显示进制的类型。

# 转为八进制
num = 314
f_str = f'圆周率为{num:o}。'     # 小写的o
print(8, f_str)                # >>> 圆周率为472。

# 转为16进制
num = 314
f_str = f'圆周率为{num:x}。'     # 小写的x,如果为大写X,那么结果会变为13A。
print(9, f_str)                # >>> 圆周率为13a。

# 转为浮点数
num = 314
f_str = f'圆周率为{num:f}。'     # 大小写,效果一样。
print(10, f_str)               # >>> 圆周率为314.000000。

# 转为科学计数法。
num = 31415926
f_str = f'圆周率为{num:g}。'     # 小写g,如果为大写G,则结果为3.14159E+07
print(11, f_str)               # >>> 圆周率为3.14159e+07.


# 正负号显示。
num = 314
f_str = f'圆周率为{num:^+10}。'     # + 表示:数字为整数时,在前面加+;为负数时,在前面加-
print(12, f_str)                   # >>> 圆周率为   +314   。

参考博文:
详细参数说明

你可能感兴趣的:(python知识点整理,python,字符串)