Método Python String format()

Se ha introducido la  función Python format() para manejar el formateo de strings complejas de manera más eficiente.

Python3

txt = "I have {an:.2f} Ruppes!"
print(txt.format(an = 4))

Producción:

I have 4.00 Ruppes!

Este método de la clase de string incorporada proporciona funcionalidad para sustituciones de variables complejas y formateo de valores. Esta nueva técnica de formato se considera más elegante. La sintaxis general del método format() es string.format(var1, var2,…). Aquí intentaremos entender cómo dar formato a una string que contiene llaves en Python

Una demostración simple de format()

Los formateadores funcionan colocando uno o más campos de reemplazo y marcadores de posición definidos por un par de llaves { } en una string y llamando a str.format() . El valor que deseamos poner en los marcadores de posición y concatenar con la string pasada como parámetros en la función de formato.

Sintaxis de la función format()

Sintaxis: { }.format(valor)

Parámetros: 

  • valor: puede ser un número entero, una constante numérica de punto flotante, una string, caracteres o incluso variables.

Tipo de retorno: devuelve una string formateada con el valor pasado como parámetro en la posición del marcador de posición. 

Método 1: usar un único formateador

En este ejemplo, usaremos el programa de notación de paréntesis de strings para demostrar el método str.format().

Python3

# using format option in a simple string
print("{}, A computer science portal for geeks."
      .format("GeeksforGeeks"))
 
# using format option for a
# value stored in a variable
str = "This article is written in {}"
print(str.format("Python"))
 
# formatting a string using a numeric constant
print("Hello, I am {} years old !".format(18))

Producción :

GeeksforGeeks, A computer science portal for geeks.
This article is written in Python
Hello, I am  18 years old!

Método  2: formato Python String() con múltiples marcadores de posición

Se pueden usar varios pares de llaves al formatear la string en Python . Digamos que se necesita otra sustitución de variable en la oración, que se puede hacer agregando un segundo par de llaves y pasando un segundo valor al método. Python reemplazará los marcadores de posición con valores en orden. 

Sintaxis: { } { } .format(valor1, valor2)

Parámetros:   (valor1, valor2): pueden ser números enteros, constantes numéricas de coma flotante, strings, caracteres e incluso variables. La única diferencia es que la cantidad de valores pasados ​​como parámetros en el método format() debe ser igual a la cantidad de marcadores de posición creados en la string.

Errores y excepciones: 

IndexError: ocurre cuando la string tiene un marcador de posición adicional y no le pasamos ningún valor en el método format(). Python generalmente asigna los marcadores de posición con un índice predeterminado en orden como 0, 1, 2, 3…. para acceder a los valores pasados ​​como parámetros. Entonces, cuando encuentra un marcador de posición cuyo índice no tiene ningún valor pasado como parámetro, arroja IndexError. 

Programa de Python que usa múltiples marcadores de posición para demostrar el método str.format().

Python3

# Multiple placeholders in format() function
my_string = "{}, is a {} science portal for {}"
print(my_string.format("GeeksforGeeks", "computer", "geeks"))
 
# different datatypes can be used in formatting
print("Hi ! My name is {} and I am {} years old"
      .format("User", 19))
 
# The values passed as parameters
# are replaced in order of their entry
print("This is {} {} {} {}"
      .format("one", "two", "three", "four"))

Producción : 

GeeksforGeeks, is a computer science portal for geeks
Hi! My name is User and I am 19 years old
This is one two three four

Método 3: formato de string Python() IndexError

Programa de Python que demuestra que el número de error de índice de marcadores de posición es cuatro, pero solo se pasan tres valores.

Python3

# parameters in format function.
my_string = "{}, is a {} {} science portal for {}"
 
print(my_string.format("GeeksforGeeks", "computer", "geeks"))

Producción : 

IndexError: tuple index out of range

Formateo de strings usando secuencias de escape

Puede usar dos o más caracteres especialmente designados dentro de una string para formatear una string o ejecutar un comando. Estos caracteres se denominan secuencias de escape. Una secuencia de escape en Python comienza con una barra invertida (\). Por ejemplo, \n es una secuencia de escape en la que el significado común de la letra n se escapa literalmente y se le da un significado alternativo: una nueva línea.

Secuencia de escape Descripción      Ejemplo      
\norte Divide la string en una nueva línea print(‘Diseñé esta rima para explicar a su debido tiempo\nTodo lo que sé’)
\t Agrega una pestaña horizontal print(‘El tiempo es algo valioso’)
\\ Imprime una barra invertida print(‘Míralo pasar\\mientras el péndulo oscila’)
\’    Imprime una comilla simple print(‘Ni siquiera importa cuánto lo intentes’)
\”     Imprime una comilla doble print(‘Es tan\”irreal\”’)
\a hace un sonido como una campana imprimir(‘\a’) 

Formateadores con argumentos posicionales y de palabras clave

Cuando los marcadores de posición { } están vacíos, Python reemplazará los valores pasados ​​a través de str.format() en orden. Los valores que existen dentro del método str.format() son esencialmente tipos de datos de tupla y cada valor individual contenido en la tupla se puede llamar por su número de índice, que comienza con el número de índice 0. Estos números de índice se pueden pasar al curly llaves que sirven como marcadores de posición en la string original.

Sintaxis: {0} {1}.format(argumento_posicional, argumento_palabra clave)

Parámetros: (argumento_posicional, argumento_palabra clave)

  • Positional_argument puede ser números enteros, constantes numéricas de coma flotante, strings, caracteres e incluso variables. 
  • Keyword_argument es esencialmente una variable que almacena algún valor, que se pasa como parámetro.

Ejemplo:

Demostrar el uso de formateadores con argumentos clave posicionales.

Python3

# Positional arguments
# are placed in order
print("{0} love {1}!!".format("GeeksforGeeks",
                              "Geeks"))
 
# Reverse the index numbers with the
# parameters of the placeholders
print("{1} love {0}!!".format("GeeksforGeeks",
                              "Geeks"))
 
 
print("Every {} should know the use of {} {} programming and {}"
      .format("programmer", "Open", "Source",
              "Operating Systems"))
 
 
# Use the index numbers of the
# values to change the order that
# they appear in the string
print("Every {3} should know the use of {2} {1} programming and {0}"
      .format("programmer", "Open", "Source", "Operating Systems"))
 
 
# Keyword arguments are called
# by their keyword name
print("{gfg} is a {0} science portal for {1}"
      .format("computer", "geeks", gfg="GeeksforGeeks"))

Producción : 

¡A GeeksforGeeks les encantan los Geeks!

¡¡A los frikis les encanta GeeksforGeeks!!

Todo programador debe conocer el uso de la programación Open Source y los Sistemas Operativos

Todos los sistemas operativos deben conocer el uso de la programación y el programador Source Open.

GeeksforGeeks es un portal de informática para geeks

Especificación de tipo en Python

Se pueden incluir más parámetros dentro de las llaves de nuestra sintaxis. Utilice la sintaxis del código de formato {field_name: conversion} , donde field_name especifica el número de índice del argumento del método str.format(), y conversion se refiere al código de conversión del tipo de datos.

Método 1: %s : conversión de strings a través de str() antes de formatear

Python3

print("%20s" % ('geeksforgeeks', ))
print("%-20s" % ('Interngeeks', ))
print("%.5s" % ('Interngeeks', ))

Producción:

geeksforgeeks
Interngeeks         
Inter

Método 2: %c – carácter  

Python3

type = 'bug'
 
result = 'troubling'
 
print('I wondered why the program was %s me. Then\
it dawned on me it was a %s .' %
      (result, type))

Producción:

Me preguntaba por qué el programa me estaba molestando. Entonces me di cuenta de que era un error.

Método 3: %i entero decimal con signo y %d entero decimal con signo (base-10) 

Python3

match = 12000
 
site = 'amazon'
 
print("%s is so useful. I tried to look\
up mobile and they had a nice one that cost %d rupees." % (site, match))

Producción:

Amazon es muy útil. Intenté buscar móviles y tenían uno bonito que costaba 12000 rupias.

Otra especificación de tipo útil 

  • %u entero decimal sin signo
  • %o entero octal
  • f – visualización de coma flotante
  • b – número binario
  • o – número octal
  • %x – hexadecimal con letras minúsculas después del 9
  • %X – hexadecimal con letras mayúsculas después del 9
  • e – notación exponencial

También puede especificar símbolos de formato . El único cambio es usar dos puntos (:) en lugar de %. Por ejemplo, en lugar de %s use {:s} y en lugar de %d use (:d}

Sintaxis:  String {field_name:conversion} Example.format(value)
Errores y excepciones:  
ValueError: se produce un error durante la conversión de tipo en este método. 

Método 4: convertir enteros decimales de base 10 en constantes numéricas de coma flotante 

Python3

print("This site is {0:f}% securely {1}!!".
      format(100, "encrypted"))
 
# To limit the precision
print("My average of this {0} was {1:.2f}%"
      .format("semester", 78.234876))
 
# For no decimal places
print("My average of this {0} was {1:.0f}%"
      .format("semester", 78.234876))
 
# Convert an integer to its binary or
# with other different converted bases.
print("The {0} of 100 is {1:b}"
      .format("binary", 100))
 
print("The {0} of 100 is {1:o}"
      .format("octal", 100))

Producción : 

This site is 100.000000% securely encrypted!!
My average of this semester was 78.23%
My average of this semester was 78%
The binary of 100 is 1100100
The octal of 100 is 144

Errores de especificación de tipo

Demostrar ValueError al hacer conversiones de tipo forzadas

Python3

# When explicitly converted floating-point
# values to decimal with base-10 by 'd'
# type conversion we encounter Value-Error.
print("The temperature today is {0:d} degrees outside !"
      .format(35.567))
 
# Instead write this to avoid value-errors
''' print("The temperature today is {0:.0f} degrees outside !"
                                            .format(35.567))'''

Producción : 

ValueError: Unknown format code 'd' for object of type 'float'

Sustituciones de relleno o generación de espacios

Ejemplo: Demostración del espaciado cuando las strings se pasan como parámetros

De forma predeterminada, las strings se justifican a la izquierda dentro del campo y los números se justifican a la derecha. Podemos modificar esto colocando un código de alineación justo después de los dos puntos.

<   :  left-align text in the field
^   :  center text in the field
>   :  right-align text in the field

Python3

# To demonstrate spacing when
# strings are passed as parameters
print("{0:4}, is the computer science portal for {1:8}!"
      .format("GeeksforGeeks", "geeks"))
 
# To demonstrate spacing when numeric
# constants are passed as parameters.
print("It is {0:5} degrees outside !"
      .format(40))
 
# To demonstrate both string and numeric
# constants passed as parameters
print("{0:4} was founded in {1:16}!"
      .format("GeeksforGeeks", 2009))
 
 
# To demonstrate aligning of spaces
print("{0:^16} was founded in {1:<4}!"
      .format("GeeksforGeeks", 2009))
 
print("{:*^20s}".format("Geeks"))

Producción : 

GeeksforGeeks, is the computer science portal for geeks   !
It is    40 degrees outside!
GeeksforGeeks was founded in             2009!
 GeeksforGeeks   was founded in 2009 !
*******Geeks********

Aplicaciones 

Los formateadores se utilizan generalmente para organizar datos. Los formateadores se pueden ver en su mejor luz cuando se utilizan para organizar una gran cantidad de datos de una manera visual. Si estamos mostrando bases de datos a los usuarios, el uso de formateadores para aumentar el tamaño del campo y modificar la alineación puede hacer que la salida sea más legible.

Ejemplo: Para demostrar la organización de grandes datos usando format()

Python3

# which prints out i, i ^ 2, i ^ 3,
#  i ^ 4 in the given range
 
# Function prints out values
# in an unorganized manner
def unorganized(a, b):
    for i in range(a, b):
        print(i, i**2, i**3, i**4)
 
# Function prints the organized set of values
def organized(a, b):
    for i in range(a, b):
 
        # Using formatters to give 6
        # spaces to each set of values
        print("{:6d} {:6d} {:6d} {:6d}"
              .format(i, i ** 2, i ** 3, i ** 4))
 
# Driver Code
n1 = int(input("Enter lower range :-\n"))
n2 = int(input("Enter upper range :-\n"))
 
print("------Before Using Formatters-------")
 
# Calling function without formatters
unorganized(n1, n2)
 
print()
print("-------After Using Formatters---------")
print()
 
# Calling function that contains
# formatters to organize the data
organized(n1, n2)

Producción : 

Enter lower range :-
3
Enter upper range :-
10
------Before Using Formatters-------
3 9 27 81
4 16 64 256
5 25 125 625
6 36 216 1296
7 49 343 2401
8 64 512 4096
9 81 729 6561

-------After Using Formatters---------

     3      9     27     81
     4     16     64    256
     5     25    125    625
     6     36    216   1296
     7     49    343   2401
     8     64    512   4096
     9     81    729   6561

Uso de un diccionario para el formato de strings 

Usar un diccionario para desempaquetar valores en los marcadores de posición en la string que debe formatearse. Básicamente usamos ** para desempaquetar los valores. Este método puede ser útil en la sustitución de strings mientras se prepara una consulta SQL.

Python3

introduction = 'My name is {first_name} {middle_name} {last_name} AKA the {aka}.'
full_name = {
    'first_name': 'Tony',
    'middle_name': 'Howard',
    'last_name': 'Stark',
    'aka': 'Iron Man',
}
 
# Notice the use of "**" operator to unpack the values.
print(introduction.format(**full_name))

Producción:

My name is Tony Howard Stark AKA the Iron Man.

Formato de Python() con lista

Dada una lista de valores flotantes, la tarea es truncar todos los valores flotantes a 2 dígitos decimales. Veamos los diferentes métodos para hacer la tarea.

Python3

# Python code to truncate float
# values to 2 decimal digits.
   
# List initialization
Input = [100.7689454, 17.232999, 60.98867, 300.83748789]
   
# Using format
Output = ['{:.2f}'.format(elem) for elem in Input]
   
# Print output
print(Output)

Producción:

['100.77', '17.23', '60.99', '300.84']

Publicación traducida automáticamente

Artículo escrito por retr0 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *