Introducción a la programación en Python (019): explicación detallada del método format() de cadenas
Tabla de contenido
1. Formato básico del método format()
El método format() de cadena se utiliza para formatear cadenas. El método format() es muy poderoso y el formato es relativamente complejo. La sintaxis es la siguiente:
常量{
参数序列:格式控制标记}常量{
参数序列:格式控制标记}.format(*args, **kwargs)
ilustrar:
(1) El número de serie del parámetro es el parámetro entrante. La plantilla de configuración de formato es una cadena compuesta por una cadena y caracteres de descripción de control de formato, que se utiliza para formatear los parámetros entrantes. La plantilla de formato está representada por {} y puede haber varias, correspondientes a los parámetros separados por comas en el método format().
(2) Las constantes pueden ser símbolos o texto y pueden configurarse según las necesidades de desarrollo del programa.
(3) El parámetro de posición puede ser uno, dos o más, y su número de secuencia de índice correspondiente puede corresponder al índice de posición uno a uno. Cuando el número de índice y la etiqueta de formato están vacíos, en realidad es una cadena directamente conectada al parámetro posicional.
Por ejemplo:
print("小明的生日为:{}年{}月{}日".format(2004,12,5))
程序运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
小明的生日为:2004年12月5日
2. Uso del método format()
1. Reemplazar en orden
El formato es el siguiente:
"{} {}".format(values1, values2)
Nota: el formato completará los parámetros en la cadena en orden posicional y los asignará automáticamente en orden, y un parámetro se puede insertar varias veces. { {}} solo representa {} y no ocupa el orden de posición del formato de cadena.
Por ejemplo:
# {} 和参数的个数必须匹配,否则会报错。
name = "王涛"
age = 25
print("我叫{},今年{}岁了。".format(name,age))
print("Address:{}{}{},{}。".format("河南省","新乡市","红旗区","河南科技学院"))
print("{}{
{}}{}{
{}}{}".format("河南省","新乡市","红旗区"))
程序运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
我叫王涛,今年25岁了。
Address:河南省新乡市红旗区,河南科技学院。
河南省{
}新乡市{
}红旗区
2. Coincidir y reemplazar según el índice.
El formato es el siguiente:
"{0} {1}".format(value1, value2)
说明:按索引编号来匹配替换 {
索引} 的值。
Por ejemplo:
name = "王涛"
age = 25
year = 2002
month = 10
day = 22
prov = "河南省"
city1 = "新乡市"
city2 = "郑州市"
print("我叫{0},今年{1}岁了。".format(name,age))
print("李明的生日:{0}-{1}-{2}".format(year,month,day))
print("李明的生日:{1}-{2}-{0}".format(year,month,day))
print("{0}的地址:{1}{2};李明的地址:{1}{3}".format(name,prov,city1,city2))
程序运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
我叫王涛,今年25岁了。
李明的生日:2002-10-22
李明的生日:10-22-2002
王涛的地址:河南省新乡市;李明的地址:河南省郑州市
3. Haga coincidir y reemplace según el índice de palabras clave
El formato es el siguiente:
"{关键字索引1} {关键字索引2}".format(关键字索引1 = value1, 关键字索引2 = value2)
Por ejemplo:
name1 = "王涛"
age1 = 25
year1 = 2002
month1 = 10
day1 = 22
print("我叫{name},今年{age}岁了。".format(name=name1,age=age1))
print("我叫{name},今年{age}岁了。".format(age=age1,name=name1))
print("李明的生日:{year}-{month}-{day}".format(day=day1,month=month1,year=year1))
print("李明的生日:{month}-{day}-{year}".format(day=day1,month=month1,year=year1))
程序运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
我叫王涛,今年25岁了。
我叫王涛,今年25岁了。
李明的生日:2002-10-22
李明的生日:10-22-2002
4. Formatear cadenas por índice de lista
El formato es el siguiente:
列表名=['列表值1','列表值2','列表值3'...]
"{List[列表索引1]},{List[列表索引2]}".format(List = 列表名)
说明:在format格式化时,可使用 * 对list拆分
Por ejemplo:
list1 = ["王涛",25]
list2 = [2002,10,22]
list3 = ["Tom","Jerry","Rose","Black"]
list4 = [25,22,20,24]
print("我叫{list[0]},今年{list[1]}岁了。".format(list=list1))
print("我叫{0[0]},今年{0[1]}岁了。".format(list1))
print("李明的生日:{list[0]}-{list[1]}-{list[2]}".format(list=list2))
print("李明的生日:{list[1]}-{list[2]}-{list[0]}".format(list=list2))
print("李明的生日:{0[1]}-{0[2]}-{0[0]}".format(list2))
print("{0[0]}的年龄为{1[1]};{0[1]}的年龄为{1[2]};{0[2]}的年龄为{1[0]};{0[3]}的年龄为{1[3]}。".format(list3,list4))
# 使用 *与** 对list进行拆分
print("李明的生日:{1}-{2}-{0}".format(*list2))
程序运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
我叫王涛,今年25岁了。
我叫王涛,今年25岁了。
李明的生日:2002-10-22
李明的生日:10-22-2002
李明的生日:10-22-2002
Tom的年龄为22;Jerry的年龄为20;Rose的年龄为25;Black的年龄为24。
李明的生日:10-22-2002
5. Establecer cadena formateada a través del diccionario
El formato es el siguiente:
字典名1={
'字典索引1':'字典索引1的值', '字典索引2':'字典索引2的值', ...}
"{字典索引},{字典索引值}".format(字典名1)
说明:在format格式化时,可使用 ** 对字典拆分
Por ejemplo:
dict1 = {
"name":"王涛","age":21}
dict2 = {
"year":2002,"month":10,"day":22}
print("我叫{0[name]},今年{0[age]}岁了。".format(dict1))
print("我叫{0},今年{1}岁了。".format(*dict1))
print("李明的生日:{0[year]}-{0[month]}-{0[day]}".format(dict2))
print("李明的生日:{0[month]}-{0[day]}-{0[year]}".format(dict2))
print("我叫{name},今年{age}岁了。生日:{year}-{month}-{day}".format(**dict1,**dict2))
程序运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
我叫王涛,今年21岁了。
我叫name,今年age岁了。
李明的生日:2002-10-22
李明的生日:10-22-2002
我叫王涛,今年21岁了。生日:2002-10-22
6. Uso mixto
(1) Puede mezclar y combinar por índice y nombre de parámetro.
(2) Nota: Los parámetros nombrados deben colocarse al final. De lo contrario, se producirá un error durante la compilación.
(3) La indexación y el formato predeterminado no se pueden mezclar.
(4) Admite referencias parciales a parámetros y puede obtener valores para partes de parámetros a través de índices.
Por ejemplo:
list1 = ["王涛",21]
dict1 = {
"year":2002,"month":10,"day":22}
print("我叫{},生日为:{year}-{month}-{day},今年{}岁了。".format(*list1,**dict1))
print("我叫{},今年{age}岁了。".format("刘鹏",age=25))
# print("我叫{},今年{age}岁了。".format(age=25,"刘鹏")) #此代码错误,命名参数必须放在最后
print("我叫{},今年{1}岁了。".format("刘鹏",25)) #此代码错误,索引和默认格式化不可以混合使用
程序运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
我叫王涛,生日为:2002-10-22,今年21岁了。
我叫刘鹏,今年25岁了。
Traceback (most recent call last):
File "C:\Python\Python38\First.py", line 6, in <module>
print("我叫{},今年{1}岁了。".format("刘鹏",25))
ValueError: cannot switch from automatic field numbering to manual field specification
3. Formatear cadena
1. Justificar a la izquierda y completar cadenas formateadas
El formato es el siguiente:
:< # 左对齐填充
< # 左对齐,后面带宽度
: # 后面带填充的字符,只能是一个字符,不指定则默认是用空格填充
Por ejemplo:
print('{:<10}!'.format('China')) # 默认填充空格
print('{:0<10}!'.format('China')) # 用0填充
程序运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
China !
China00000!
Aplicación integral:
products=[["苹果",16.88],["香蕉",22.56],["西瓜",30.2],["西红柿",4.99]]
print("=="*5+"商品列表"+"=="*5)
i=1
for product in products:
print('{:0<6}\t{:<10}\t{:<10.1f}'.format(i, product[0], product[1]))
i = i+1
程序运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
==========商品列表==========
100000 苹果 16.9
200000 香蕉 22.6
300000 西瓜 30.2
400000 西红柿 5.0
2. Alinear a la derecha y rellenar cadenas formateadas
El formato es el siguiente:
:> # 右对齐
> # 右对齐,后面带宽度,
: # 后面带填充的字符,只能是一个字符,不指定则默认是用空格填充
Por ejemplo:
print('国家:{:>10}!'.format('China')) # 默认填充空格
print('国家:{:0>10}!'.format('China')) # 用0填充
程序运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
国家: China!
国家:00000China!
Aplicación integral:
products=[["苹果",16.88],["香蕉",22.56],["西瓜",30.2],["西红柿",4.99]]
print("=="*5+"商品列表"+"=="*5)
i=1
for product in products:
print('{:0>6}\t{:<10}\t{:>10.1f}元'.format(i, product[0], product[1]))
i = i+1
程序运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
==========商品列表==========
000001 苹果 16.9元
000002 香蕉 22.6元
000003 西瓜 30.2元
000004 西红柿 5.0元
3. Alinear al centro y rellenar cadenas formateadas
El formato es el siguiente:
:^ # 居中对齐
^ # 居中对齐,后面带宽度
: # 后面带填充的字符,只能是一个字符,不指定则默认是用空格填充
Por ejemplo:
print('国家:{:^10}!'.format('China')) # 默认填充空格
print('国家:{:0^10}!'.format('China')) # 用0填充
程序运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
国家: China !
国家:00China000!
Aplicación integral:
products=[["苹果",16.88],["香蕉",22.56],["西瓜",30.2],["西红柿",4.99]]
print("=="*5+"商品列表"+"=="*5)
i=1
for product in products:
print('{:0>6}\t{:^10}\t{:>10.1f}元'.format(i, product[0], product[1]))
i = i+1
程序运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
==========商品列表==========
000001 苹果 16.9元
000002 香蕉 22.6元
000003 西瓜 30.2元
000004 西红柿 5.0元
4. Aplicación integral del método format()
(1) Imprimir patrón alineado a la izquierda
El código se muestra a continuación:
for i in range(1, 11):
print("{:<{}}".format("*" * i, 10))
程序运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
*
**
***
****
*****
******
*******
********
*********
**********
(2) Imprimir patrón alineado a la derecha
El código se muestra a continuación:
for i in range(1, 11):
print("{:>{}}".format("*" * i, 10))
程序运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
*
**
***
****
*****
******
*******
********
*********
**********
(3) Imprimir patrón alineado al centro
El código se muestra a continuación:
for i in range(1, 21, 2):
print("{:^{}}".format("*" * i, 20))
程序运行结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************