Introducción a la programación en Python (019): explicación detallada del método format() de cadenas

Introducción a la programación en Python (019): explicación detallada del método format() de cadenas

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 =====================
小明的生日为:2004125

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.9000002	香蕉        	      22.6000003	西瓜        	      30.2000004	西红柿       	       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.9000002	    香蕉    	      22.6000003	    西瓜    	      30.2000004	   西红柿    	       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 =====================
         *          
        ***         
       *****        
      *******       
     *********      
    ***********     
   *************    
  ***************   
 *****************  
******************* 

Supongo que te gusta

Origin blog.csdn.net/weixin_44377973/article/details/132300478
Recomendado
Clasificación