以前格式化字符串一直用的%,最近认识了一下format。format是Python中新的格式化字符串的方式(相较于%而言),用起来非常方便,可以实现不少%不能实现的功能。本文就来介绍一下酷酷的format。
基本用法
"Hello {0}".format("Peppa Pig") # 引用第一个参数
# 输出 'Hello Peppa Pig'
"{} is cute".format("Peppa Pig") # 引用第一个参数
# 输出 'Peppa Pig is cute'
"My name is {name}".format(name="Peppa Pig") # 引用名字为name的参数
# 输出 'My name is Peppa Pig'
类型转换
"Peppa pig is a cute {0!s}".format("baby") # !s 相当于对于参数调用str()
# 输出 'Peppa pig is a cute baby'
"Peppa pig is a cute {0!r}".format("baby") # !r 相当于对于参数调用repr()
# 输出 "Peppa pig is a cute 'baby'"
format中进行进制转换
'{0} in HEX is {0:#x}'.format(16)
# 输出 '16 in HEX is 0x10'
'{0} is OCT is {0:#o}'.format(16)
# 输出 '16 is OCT is 0o20'
对齐字符串
"{:>5}".format(1) # 设置宽度为5,右对齐
"{:>5}".format(10)
"{:>5}".format(100)
"{:>5}".format(1000)
# 输出下面的结果
' 1'
' 10'
' 100'
' 1000'
'{:_<10}'.format('test') # 左对齐,并且指定"_"填充空白部分
# 输出 'test______'
'{:_^10}'.format('test') # 居中对齐,并且指定"_"填充两侧
# 输出 '___test___'
# 注意:用%格式化字符串不支持居中对齐
截断字符串
'{:.5}'.format('Hello Peppa') # 截取前5个字符
# 输出 'Hello'
时间格式化
from datetime import datetime
'{:%Y-%m-%d %H:%M}'.format(datetime(2018, 5, 19, 21, 00))
# 输出 '2018-05-19 21:00'
# 注意:用%格式化字符串不支持此功能
访问对象属性
class Pig(object):
def __init__(self, name, age, weight):
self.name = name
self.age = age
self.weight = weight
def __repr__(self):
return '<Pig name="{0}" age={1}>'.format(self.name, self.age)
a = Pig("Peppa", 5, 30)
print("Peppa is {0.age} years old, {0.weight} kilograms".format(a))
# 输出 Peppa is 5 years old, 30 kilograms
# 注意:用%格式化字符串不支持此功能
访问元组中的元素
a = (1,2)
'X: {0[0]}; Y: {0[1]}'.format(a)
# 输出 'X: 1; Y: 2'
# 注意:用%格式化字符串不支持此功能
访问字典中的元素
peppa = {"name": "Peppa", "age": 5}
"My name is {pig[name]} and my age is {pig[age]}".format(pig=peppa)
# 输出 'My name is Peppa and my age is 5'
# 注意:用%格式化字符串不支持此功能
参数指定格式
format支持传入参数指定格式,如下
'{:{char}{align}{width}}'.format('test', char='_', align='^', width='10')
# 输出 '___test___'
# 注意:用%格式化字符串不支持此功能
from datetime import datetime
dt = datetime(2018, 5, 19, 21, 0)
'{:{dfmt} {tfmt}}'.format(dt, dfmt='%Y-%m-%d', tfmt='%H:%M')
# 输出 '2018-05-19 21:00'
# 注意:用%格式化字符串不支持此功能
先整理了这一些,欢迎补充~