Python中format格式化的用法及说明
作者:NOOB-面具
可以通过下面几种方式来实现
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
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。