Python中format格式化的用法及说明

 更新时间:2024年02月07日 09:33:11   作者:NOOB-面具  
这篇文章主要介绍了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)

有以下几个注意事项

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

最新评论