格式化字符串时尽量使用format()方式而不是%

Python中内置的%操作符format()方式都可以用于格式化字符串。

使用字符串格式设置运算符——百分号

%操作符根据转换说明符所规定的格式返回一串格式化后的字符串,转换说明符的基本形式为:%[转换标记][宽度[.精确度]]转换类型

%操作符格式化字符串时有如下几种常见用法:

  • 直接格式化字符或者数值

  • 以元组的形式格式化

  • 以字典的形式格式化

print("The %s is a kind of %s." % ('apple', 'fruit'))   # The apple is a kind of fruit.


person = {"name": "watkins", "address": "siso"}
print("The address of %(name)s is %(address)s." % person)   # The address of watkins is siso.

对字符串调用方法format

print("The age of {name} is {age:02d}".format(name='watkins', age=5))   # The age of watkins is 05

format()方法格式字符串的调用格式为:"{字段名!转换标志:格式说明符}.format()"。当前支持的转换标志字符包括r(repr)、s(str)和a(ascii)。

格式说明符常用的调用方式为:[[填充符]对齐方式][符号][#][0][宽度][,][.精确度][转换类型]

字符串格式设置中的转换类型

类型含义
b将整数表示为二进制数
c将整数解读为Unicode码点
d将整数视为十进制数来处理,这是整数默认使用的说明符
e使用科学表示法来表示小数(用e来表示指数)
f将小数表示为定点数
g自动在定点表示法和科学表示法之间做出选择。这是默认用于小数的说明符,但在默认情况下至少有1位小数
o将整数表示为八进制数
s保持字符串的格式不变,这是默认用于字符串的说明符
x将整数表示为十六进制数并使用小写字母
%将数表示为百分比值

format()方法几种常见的用法如下:

  • 使用位置符号

  • 使用名称

  • 通过属性

  • 格式化元组的具体项

# 替换字段没有名称可将索引用作名称,且可无需按顺序排列
print("{3} {0} {2} {1} {3} {0}".format('be', 'not', 'or', 'to'))    # to be or not to be

# 如果变量和替换字段同名,可使用f字符串——在字符串前面加上f
from math import e
print(f"Euler's constant is roughly {e:05.2f}") # Euler's constant is roughly 02.72

# 要指定左对齐、右对齐和居中,可分别使用<、>和^
print("{pi:$^8.2f}".format(pi=3.141592))   # $$3.14$$
print("{sale:,.2f}".format(sale=20190328.1227)) # 20,190,328.12

# 井号选项会触发另一种转换方式,转换细节随类型而异。
print("{bn:#b}".format(bn=28))  # 0b11100

为什么要尽量使用format方式而不是%操作符来格式化字符串:

  • format方式在使用上较%操作符更为灵活

  • format方式可以方便地作为参数传递

  • %最终会被format()方式所代替。

  • %方法在某些特殊情况下使用需要特别小心。

 # 使用%方法格式化元组,要注意(name, )后面的符号
 name = ("watkins", "uself")

 # TypeError: not all arguments converted during string formatting
 print("the names is %s" % (name))   

 print("the names is %s" % (name, )) # the names is ('watkins', 'uself')

(最近更新:2019年04月11日)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值