Formateo de strings en Python – Part 1

En este artículo, discutiremos cómo formatear una string Python. El formateo de strings es el proceso de infundir cosas en la string dinámicamente y presentar la string. Hay cuatro formas diferentes de realizar el formateo de strings: –

  • Formateo con % Operador.
  • Formateo con el método de string format().
  • Formateo con literales de string, llamados f-strings.
  • Formateo con la clase de plantilla de string

Así que veremos la totalidad de las formas mencionadas anteriormente, y también nos centraremos en qué estrategia de formato de string es la mejor.

String de formato usando el operador %

Es el método más antiguo de formateo de strings. Aquí usamos el operador módulo % . El módulo % también se conoce como el «operador de formato de string».

Ejemplo: String de formato usando el operador %

Python3

print("The mangy, scrawny stray dog %s gobbled down" +
      "the grain-free, organic dog food." %'hurriedly')

Producción:

El perro callejero, sarnoso y flacucho, engulló apresuradamente la comida para perros orgánica y sin granos. 

También puede inyectar varias strings a la vez y también puede usar variables para insertar objetos en la string.

Ejemplo: Inyectar múltiples strings usando el operador %

Python3

x = 'looked'
 
print("Misha %s and %s around"%('walked',x))

Producción:

Misha walked and looked around.

‘%s’ se usa para inyectar strings de forma similar a ‘%d’ para números enteros, ‘%f’ para valores de coma flotante, ‘%b’ para formato binario. Para todos los formatos, métodos de conversión, visite la documentación oficial.

Ejemplo:

Python3

print('Joe stood up and %s to the crowd.' %'spoke')
 
print('There are %d dogs.' %4)

Producción:

Joe stood up and spoke to the crowd.
There are 4 dogs.

Precisión flotante con el método de marcador de posición:

Los números de coma flotante usan el formato %a.bf . Aquí, a sería el número mínimo de dígitos que debe haber en la string; estos pueden rellenarse con espacios en blanco si el número entero no tiene tantos dígitos. Cerca de esto, bf representa cuántos dígitos se mostrarán después del punto decimal. 

Veamos algunos ejemplos:

Ejemplo 1: Precisión de punto flotante usando el operador %

Python3

print('The value of pi is: %5.4f' %(3.141592))

Producción:

The value of pi is: 3.1416

Ejemplo 2:

Python3

print('Floating point numbers: %1.0f' %(13.144))

Producción:

Floating point numbers: 13

Ejemplo 3: puede usar varios tipos de conversión de formato en una sola instrucción de impresión

Python3

variable = 12
 
string = "Variable as integer = %d \n\
Variable as float = %f" %(variable, variable)
 
print (string)
Producción

Variable as integer = 12 
Variable as float = 12.000000

Nota: Para obtener más información sobre el formato %, consulte Formato de string en Python usando %

String de formato usando el método format()

El método Format() se introdujo con Python3 para manejar el formateo de strings complejas de manera más eficiente. 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: ‘String aquí {} luego también {}’.format(‘algo1’, ‘algo2’)

Ejemplo: String de formato usando el método format()

Python3

print('We all are {}.'.format('equal'))

Producción:

We all are equal.

El método .format() tiene muchas ventajas sobre el método de marcador de posición:

  • Podemos insertar un objeto usando una posición basada en índice:

Python3

print('{2} {1} {0}'.format('directions',
                           'the', 'Read'))

Producción:

Read the directions.
  • Podemos insertar objetos usando palabras clave asignadas:

Python3

print('a: {a}, b: {b}, c: {c}'.format(a = 1,
                                      b = 'Two',
                                      c = 12.3))

Producción:

a: 1, b: Two, c: 12.3
  • Podemos reutilizar los objetos insertados para evitar la duplicación:

Python3

print('The first {p} was alright, but the {p} {p} was tough.'.format(p = 'second'))

Producción:

El primer segundo estuvo bien, pero el segundo segundo fue duro. 

Precisión flotante con el método .format():

Sintaxis: {[índice]:[ancho][.precisión][tipo]}

El tipo se puede utilizar con códigos de formato:

  • ‘d’ para números enteros
  • ‘f’ para números de punto flotante
  • ‘b’ para números binarios
  • ‘o’ para números octales
  • ‘x’ para números octales hexadecimales
  • ‘s’ para string
  • ‘e’ para punto flotante en un formato de exponente

Ejemplo:

Python3

print('The valueof pi is: %1.5f' %3.141592)
 
# vs.
 
print('The valueof pi is: {0:1.5f}'.format(3.141592))

Producción:

The valueof pi is: 3.14159
The valueof pi is: 3.14159

Nota: para saber más sobre str.format(), consulte la función format() en Python

String formateada usando strings F

PEP 498 introdujo un nuevo mecanismo de formato de strings conocido como interpolación de strings literales o más comúnmente como strings F (debido al carácter f inicial que precede a la string literal). La idea detrás de f-strings es simplificar la interpolación de strings.

Para crear una string f, prefije la string con la letra «f». La string en sí se puede formatear de la misma manera que lo haría con str.format(). F-strings proporciona una forma concisa y conveniente de incrustar expresiones de Python dentro de literales de string para formatear.

Ejemplo: String de formato con F-Strings

Python3

name = 'Ele'
 
print(f"My name is {name}.")

Producción:

My name is Ele.

Esta nueva sintaxis de formato es muy poderosa y fácil. También puede insertar expresiones arbitrarias de Python e incluso puede realizar operaciones aritméticas en él.

Ejemplo: Operaciones aritméticas usando F-strings

Python3

a = 5
 
b = 10
 
print(f"He said his age is {2 * (a + b)}.")

Producción:

He said his age is 30.

También podemos usar expresiones lambda en formato f-string .

Ejemplo: Expresiones lambda usando strings F

Python3

print(f"He said his age is {(lambda x: x*2)(3)}")

 Producción:

He said his age is 6

Precisión flotante en el método f-String:

Sintaxis: {valor:{ancho}.{precisión}}

Ejemplo: Float Precision usando F-strings

Python3

num = 3.14159
 
print(f"The valueof pi is: {num:{1}.{5}}")

Producción:

The valueof pi is: 3.1416

Nota: para obtener más información sobre strings f, consulte strings f en Python

Clase de plantilla de string

En el módulo String, Template Class nos permite crear una sintaxis simplificada para la especificación de salida. El formato utiliza nombres de marcador de posición formados por $con identificadores de Python válidos (caracteres alfanuméricos y guiones bajos). Si rodea el marcador de posición con llaves, puede ir seguido de más letras alfanuméricas sin espacios intermedios. Escribir $$crea un solo $escapado:

Ejemplo: string de formato usando la clase de plantilla

Python3

# Python program to demonstrate
# string interpolation
 
 
from string import Template
 
n1 = 'Hello'
n2 = 'GeeksforGeeks'
 
# made a template which we used to
# pass two variable so n3 and n4
# formal and n1 and n2 actual
n = Template('$n3 ! This is $n4.')
 
# and pass the parameters into the
# template string.
print(n.substitute(n3=n1, n4=n2))

Nota: para obtener más información sobre la clase de plantilla de string, consulte Clase de plantilla de string en Python

¿Qué método de formato de string es el mejor?

f-strings son más rápidas y mejores que %-formatting y str.format() . Las expresiones f-strings se evalúan en tiempo de ejecución, y también podemos incrustar expresiones dentro de f-string, usando una sintaxis muy simple y fácil. Las expresiones dentro de las llaves se evalúan en tiempo de ejecución y luego se juntan con la parte de string de la string f y luego se devuelve la string final.

Nota: Use f-Strings si está en Python 3.6+ y el método.format() si no lo está.

Publicación traducida automáticamente

Artículo escrito por gaurvendra 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 *