python 字符串格式化

1、%-formatting

在 Python2.6之前,字符串迭代只有一种方法,就是 % 操作符,效果和 C语言中的 % 类似

print("my name is %s , age is %d" % ("Jack", 15))
# my name is Jack , age is 15

以下python字符串格式化符号:

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

2、str.format()

到 Python2.6时,出现了一种新的字符串格式化方法,str.format()函数,format函数 使用 {} 和 : 代替了 % ,使用起来更加方便。

# 不指定参数位置  'hello world'
'{} {}'.format("hello","world")

# 指定参数位置  'hello world'
'{0} {1}'.format("hello","world")

# 参数可以使用多次  'world:hello world'
'{1}:{0} {1}'.format("hello","world")

# 使用关键字参数  'tom27'
'{name}{age}'.format(name='tom', age=27)

# 通过下标映射  'hello world'
'{0[0]} {0[1]}'.format(["hello", "world"]) # "0" 是必须的

# 通过key映射  'tom 18'
'{0[name]} {0[age]}'.format({"name":"tom", "age":18})

# 按对象属性映射  'tom 27'
'{person.name} {person.age}'.format(person=person)

# 字典解包  'tom 18'
'{name} {age}'.format(**{"name":"tom", "age":18})

# 列表解包  'hello world'
'{0} {1}'.format(*["hello", "world"])

数字格式化

print("{:.2f}".format(3.1415926))  # 3.14

下表展示了 str.format() 格式化数字的多种方法:

数字格式输出描述
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)

3、f-string

Formatted String Literals(字面量格式化字符串),简称f-string
f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。
f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去,实例如下:

name = "tom"
age = 18
print(f"{name} & {age}")
# tom & 18

w = {'name': 'baidu', 'url': 'www.baidu.com'}
print(f'{w["name"]}: {w["url"]}')
# baidu: www.baidu.com

用了这种方式明显更简单了,不用再去判断使用 %s,还是 %d。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值