Python
Tipos de datos básicos
string
f-string

Python f-string: formato, float, precisión, 0 relleno, nueva línea,, error, binario, hex,

F-string, que significa Cadena formateada, es la forma más intuitiva de manipular cadenas y trabajar con equipos de formateo en Python, y es una nueva característica introducida en 3.6.

En este artículo, cubriremos los fundamentos del uso de cadenas F, junto con temas como el formateo de decimales, saltos de línea, sentencias for y manejo de errores.

1. Cómo usar cadenas F en Python

He aquí cómo las cadenas F han cambiado Python.

Cuando se le dan las siguientes dos variables,

name = "Jonn Doe"
age = 30

Si desea obtener la siguiente salida

My name is John Doe. I'm 30 years old this year.

Utilizando el método de cadena por defecto de Python, podría haber utilizado tres métodos diferentes, como se muestra a continuación.

str1 = "My name is " + name + ". I'm " + str(age) + " years old this year."
 
str2 = "My name is %s. I'm %d years old this year." % (name, age)
 
str3 = "My name is {}. I'm {} years old this year.".format(name, age)
 
# Output:
# My name is Jonn Doe. I'm 30 years old this year.

Las cadenas F permiten escribir el código más legible, como éste

f_str1 = f"My name is {name}. I'm {age} years old this year."
 
# Output:
# My name is Jonn Doe. I'm 30 years old this year.

Como puede ver en el ejemplo, f precede a las comillas que definen la cadena literal, y el valor de la variable que está insertando está encerrado entre llaves {}. Dentro de las llaves, también puede insertar una expresión, como se muestra a continuación, o un tipo de contenedor como una lista.

friends = ["Mark", "Elon"]
 
f_str2 = f"My name is {name}. I'm {age + 1 } years old next year. My friends are {friends}."
 
# Output:
# My name is Jonn Doe. I'm 31 years old next year. My friends are ['Mark', 'Elon'].

Esta capacidad de insertar variables entre cadenas para la salida se denomina interpolación de cadenas, y está soportada por la mayoría de los lenguajes de programación modernos.

Las cadenas-F son la forma en que Python soporta la interpolación de cadenas.

Ahora que hemos cubierto los fundamentos del uso de cadenas-F, pasemos a las preguntas más frecuentes.

2. Punto flotante de precisión

Las cadenas F tienen un símbolo simple llamado especificador de formato, que te permite formatear la cadena de salida como quieras. Esto es especialmente útil para representar números. En esta sección, veremos la representación decimal, una de las varias formas de representar números.

Las cadenas F te dan la posibilidad de unificar un pequeño número de dígitos de diferentes longitudes, y luego darles una salida agradable.

Es fácil de usar. Si se añade :.2f después de una variable entre llaves, sólo se mostrará el número introducido. En nuestro caso, hemos introducido 2, por lo que vamos a imprimir hasta dos decimales.

float1 = 11.38471
float2 = 8.1
 
print(f'float1: {float1:.2f}, float2: {float2:.2f}')
 
# Output:
# float1: 11.38, float2: 8.10

El resultado, Hemos añadido 0 al final de float1 porque tiene más de dos decimales, y float2 porque termina en la primera posición.

Si es un número primo muy pequeño, también puede formatearse con el carácter de coma flotante e. Añadiendo :e, Python te dice cuántos dígitos hay a la derecha del punto decimal. También puede especificar el número de dígitos. Comprobémoslo con un ejemplo.

too_small_num = 0.00000000123
 
print(f'too_small_num: {too_small_num:e}, too_samll_num_3: {too_small_num:.3e}')
 
# Output:
# too_small_num: 1.230000e-09, too_samll_num_3: 1.230e-09

Por último, también puede mostrar porcentajes (%) como decimales y, de nuevo, puede establecer el número de decimales.

score = 0.95
 
print(f'score(%): {score:.0%}, {score:.2%}, {score:.4%}')
 
# Output:
# score(%): 95%, 95.00%, 95.0000%

3. Dígitos f-string de Python

Ya aprendimos mucho sobre la fijación de decimales en Sección 2. Los mismos principios se pueden aplicar a los números enteros.

Si los decimales fueran .0f, los flotantes fueran .0e, y los porcentajes fueran .0%, entonces los enteros son ,d. Coma, no guión bajo. Útil para una salida legible de números grandes por encima de 1.000.

big_num = 10000020003
 
print(f'big_num_with_comma: {big_num:,d}')
 
# Output:
# big_num_with_comma: 10,000,020,003

También puede añadir espacios con ^, y dar salida a números binarios, octales y hexadecimales. Compruébalo en código.

number = 25
point = 2.543
 
print(f"Binary: {number:b}")
print(f"Integer: {number:d}")
print(f"octal:{number:o}")
print(f"Hexadecimal: {number:x}")
print(f"Floating point: {point:.2e}")
print(f"Decimal: {point:.2f}")
print(f"Decimal or floating point automatically: {point:.2g}")
print(f"Percent: {point:.2%}")
 
# Output:
# Binary: 11001
# Integer: 25
# octal: 31
# Hexadecimal: 19
# Floating point: 2.54e+00
# Decimal: 2.54
# Decimal or floating point automatically: 2.5
# Percent: 254.30

4. Nueva línea

Python soporta cadenas multilínea ('''), que se pueden envolver intuitivamente. Para usar el envoltorio de cualquier otra forma, debe usar el símbolo \n, donde n significa nueva línea.

multiline1 = '''multiline
string'''
 
multiline2 = f'multiline\nstring'
 
# Output:
# multiline
# string

De hecho, las cadenas multilínea que utilizan ''' son sólo una sintaxis de conveniencia que inserta automáticamente \n.

5. f-string con bucle for

Las cadenas-f también pueden usarse junto con una sentencia for para escribir código más legible. El siguiente código imprime los nombres de los amigos en una lista de uno en uno.

friends = ["Mark", "Elon"]
 
for friend in friends:
    print(f"My friend {friend}")
 
# Output:
# My friend Mark
# My friend Elon

6. Resolución de errores de cadenas f de Python

Estos son algunos errores comunes que puede encontrar al usar f-strings. Resumimos las causas y soluciones para cada uno.

  • SyntaxError: Invalid syntax:. Ocurre cuando no sigues la sintaxis f-string. Asegúrate de prefijar los literales de cadena con f y de encerrar las variables o expresiones entre llaves {} correctamente.

  • NameError: Name '...' is not defined:. Este error se produce si está utilizando una variable no declarada. Asegúrate de haber declarado las variables que has insertado entre las cadenas.

  • TypeError: '...' object is not callable: Este error se produce al insertar una variable o expresión en la sintaxis F-string sin escribir claramente las llaves {}. Por favor, compruebe que está utilizando el formato correcto. En su lugar, calcule primero el resultado y luego insértelo en la cadena-f.

  • SyntaxError: f-string expression part cannot contain a backslash:. En todas las cadenas de Python excepto en las cadenas raw, la barra invertida tiene un significado especial. Esto se debe a que se utiliza para indicar saltos de línea, tabulaciones, etc. con símbolos como \n \t. Por lo tanto, el uso de una barra invertida directamente en una variable o expresión dará lugar a un error.

Si debe utilizar una barra invertida, utilícela con otra barra invertida que escape para volver a una cadena normal.

print(f'\\')
 
# Output:
# \
  • ValueError: Single '}' encountered in format string: Este error ocurre cuando escribes una llave extra, como print(f'{{nombre}'). Corrige cualquier error tipográfico, y si quieres usar llaves, escápalas, como { o }}.
print(f'{{{name}}}')
 
# Output:
# {John Doe}

7. Conclusión

Hasta ahora, hemos hablado de varios temas relacionados con las cadenas F en Python. No importa en qué dominio desarrolles, las F-strings son probablemente una de las características que encuentras cada día. Espero que esto te ayude a familiarizarte con ellas y usarlas cuando sea el momento adecuado.

copyright for Python F-string

© 2023 All rights reserved.