typora/note/Python/字符串格式化.md
2024-12-12 10:48:55 +08:00

6.8 KiB
Raw Blame History

占位符

符 号 描述
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整型
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g %f%e的简写
%G %f %E 的简写
%p 用十六进制数格式化变量的地址

格式化辅助指令

符号 功能
* 定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号( + )
在正数前面显示空格
# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
0 显示的数字前面填充'0'而不是默认的空格
% '%%'输出一个单一的'%'
(var) 映射变量(字典参数)
m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

str.format

  • 通过 {} 和 : 来代替以前的 %
  • 用大括号来转义大括号
>>> print ("{} 对应的位置是 {{0}}".format("school"))
school 对应的位置是 {0}
>>> 
  • format 函数可以接受不限个参数,位置可以不按顺序
>>>"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序
'hello world'
>>> "{0} {1}".format("hello", "world") # 设置指定位置
'hello world'
>>> "{1} {0} {1}".format("hello", "world") # 设置指定位置
'world hello world'
  • 为format设置参数
#!/usr/bin/python
# -*- coding: UTF-8 -*-
print("网站名:{name}, 地址 {url}".format(name="w3cschool教程", url="www.w3cschool.cn"))
# 通过字典设置参数
site = {"name": "w3cschool教程", "url": "www.w3cschool.cn"}
print("网站名:{name}, 地址 {url}".format(**site))
site = {"name": "w3cschool教程", "url": "www.w3cschool.cn"}
print("网站名:{0[name]}, 地址 {0[url]}".format(site))
# 通过列表索引设置参数
my_list = ['w3cschool教程', 'www.w3cschool.cn']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的
  • 向str.format传递对象利用对象的属性进行格式化
#!/usr/bin/python
# -*- coding: UTF-8 -*-
class AssignValue(object):
    def __init__(self, value):
        self.value = value

my_value = AssignValue(6)
print('value 为: {0.value}'.format(my_value)) # "0" 是可选的
print('value 为: {.value}'.format(my_value))

f-string格式化

  • f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去
>>> name = 'W3Cschool'
>>> print(f'Hello {name}')  # 替换变量
Hello W3Cschool
>>> 
>>> print(f'{1+2}')         # 使用表达式
3
>>> 
>>> w = {'name': 'W3Cschool', 'url': 'www.w3cschool.cn'}
>>> print(f'{w["name"]}: {w["url"]}')
W3Cschool: www.w3cschool.cn
>>> 
  • 在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果
>>> x = 1
>>> print(f'{x+1=}')   # Python 3.8
x+1=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)
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 分别是二进制、十进制、八进制、十六进制