Python的format格式化用法可以通过下面几种方式来实现:
1、使用{}
作为占位符,通过索引来指定要替换的参数,如:
# 替换第一个参数
"Hello {}, Welcome to Python world!".format("Tom")
# 替换第二个参数
"Hello {1}, Welcome to Python world! I'm {0}".format("Tom", "Alice")
2、使用{}
作为占位符,通过参数名来指定要替换的参数,如:
# 替换name参数
"Hello {name}, Welcome to Python world!".format(name="Tom")
# 替换name和age参数
"Hello {name}, Welcome to Python world! I'm {age}".format(name="Tom", age=20)
3、使用{}
作为占位符,通过指定参数位置和类型来进行格式化,如:
# 使用:指定参数类型和格式,d表示整数,f表示浮点数,s表示字符串
"Hello {0:s}, Welcome to Python world! I'm {1:d} years old".format("Tom", 20)
"Hello {0:s}, Welcome to Python world! I'm {1:f} meters tall".format("Tom", 1.75)
Python的format格式化用法还有以下几个注意事项:
1、如果使用了{}
作为占位符,那么参数中不能出现{}
字符,否则会抛出异常,应该使用{{}}来表示{字符,如:
# 错误用法
"Hello {name}, Welcome to Python world! I'm from {{China}}".format(name="Tom")
# 正确用法
"Hello {name}, Welcome to Python world! I'm from {country}".format(name="Tom", country="China")
2、在format函数中,如果指定了参数名或位置,那么参数的顺序并不重要,如:
# 不同的参数顺序
"Hello {0}, Welcome to Python world! I'm {1} years old".format(20, "Tom")
"Hello {1}, Welcome to Python world! I'm {0} years old".format(20, "Tom")
3、在format函数中,如果使用了参数名或位置,那么在调用时,必须保证提供了对应的参数,否则会抛出异常,如:
# 错误用法,没有提供name参数
"Hello {name}, Welcome to Python world!".format()
# 正确用法
"Hello {name}, Welcome to Python world!".format(name="Tom")
4、在format函数中,如果没有使用参数名或位置,那么参数的顺序必须与占位符的顺序一致,否则会抛出异常,如:
# 错误用法,参数顺序不一致
"Hello {}, Welcome to Python world! I'm {} years old".format(20, "Tom")
# 正确用法
"Hello {}, Welcome to Python world! I'm {} years old".format("Tom", 20)
5、在format函数中,如果使用了参数名或位置,那么在调用时可以提供多余的参数,这些参数不会被使用,如:
# 提供了多余的参数
"Hello {name}, Welcome to Python world!".format(name="Tom", age=20)
6、在format函数中,可以使用**kwargs
参数将一个字典中的所有键值对作为参数传递给format函数,如:
# 使用**kwargs传递参数
params = {"name": "Tom", "age": 20}
"Hello {name}, Welcome to Python world! I'm {age} years old".format(**params)
7、在format函数中,如果使用了{}
作为占位符,那么可以使用format_map
函数来替换占位符,其中format_map函数的参数必须是一个映射对象,如:
# 使用format_map函数替换占位符
params = {"name": "Tom", "age": 20}
"Hello {name}, Welcome to Python world! I'm {age} years old".format_map(params)
8、在format函数中,如果需要对字符串进行多次替换,那么可以使用format_map函数,它可以直接在字符串上调用,而不用重新创建一个新的字符串,如:
# 使用format_map函数进行多次替换
params = {"name": "Tom", "age": 20}
s = "Hello {name}, Welcome to Python world! I'm {age} years old"
new = s.format_map(params)
print(new)
# 更新参数,并继续替换
params["age"] = 21
new_2 = s.format_map(params)
print(new_2)
9、在format函数中,如果使用了{}
作为占位符,那么可以使用vars函数
自动将一个对象的属性作为参数传递给format函数,如:
# 使用vars函数自动将一个对象的属性作为参数传递给format函数
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p = Person("Tom", 20)
"Hello {name}, Welcome to Python world! I'm {age} years old".format(**vars(p))
10、在format函数中,如果使用了{}
作为占位符,那么可以使用Template类
来实现字符串的模板化,可以通过$来指定参数名,并通过safe_substitute函数
来替换占位符,如:
# 使用Template类实现字符串的模板化
from string import Template
s = Template("Hello $name, Welcome to Python world! I'm $age years old")
s.safe_substitute(name="Tom", age=20)
11、在format函数中,如果使用了{}
作为占位符,那么可以通过f-string
来实现字符串的替换,f-string必须使用Python3.6或更高版本
,它支持在字符串中直接使用变量名,并通过{}
包裹,如:
# 使用f-string实现字符串的替换
name = "Tom"
age = 20
f"Hello {name}, Welcome to Python world! I'm {age} years old"
12、在format函数中,如果需要对字符串进行格式化,那么可以使用format函数的相关参数,如align、width、precision等来控制字符串的对齐方式、宽度、精度等,如:
# 使用format函数的相关参数进行格式化
name = "Tom"
age = 20
# 左对齐,宽度为20,小数点后保留2位
"Hello {0:<20.2f}".format(name, age)
# 右对齐,宽度为20,小数点后保留2位
"Hello {0:>20.2f}".format(name, age)
# 居中对齐,宽度为20,小数点后保留2位
"Hello {0:^20.2f}".format(name, age)
13、在format函数中,如果需要对数字进行格式化,那么可以使用format函数的相关参数,如:
# 千分位分隔符
"{:,}".format(123456789)
# 百分数
"{:.2%}".format(0.8)
# 科学计数法
"{:.2e}".format(123456789)
# 十六进制
"{:x}".format(255)
14、在format函数中,如果需要对日期时间进行格式化,那么可以使用strftime函数
来指定日期时间的格式化字符串,如:
# 使用strftime函数格式化日期时间
from datetime import datetime
dt = datetime.now()
print(dt)
a = dt.strftime("%Y-%m-%d %H:%M:%S")
print(a)
# 输出
# 2022-12-09 16:51:09.534693
# 2022-12-09 16:51:09