# Python f strings: cómo formatear cadenas

Al utilizar un f string de Python, puedes insertar **expresiones y variables complejas** directamente en una cadena sin necesidad de realizar conversiones o formateos adicionales.

## ¿Qué son los Python f strings?

Los Python f strings, también denominados **literales de cadena formateados** o cadenas f, son un tipo de [formato de string de Python](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/python-string-format/) que se introdujo con la versión Python 3.6. Los f strings permiten una notación más compacta que otros métodos de formateo de cadenas como `str.format()` o la concatenación con `+`, por lo que el código resulta más claro y conciso.

Las cadenas f son muy flexibles y permiten insertar variables y expresiones en diferentes tipos de datos como **números enteros, floats, listas** o incluso expresiones y funciones sin necesidad de conversión previa o formateo especial. En general, los f strings de Python son más rápidos que otros métodos de formateo de cadenas.

## La sintaxis de los f strings

La sintaxis de los f strings es bastante simple. Se compone de un **prefijo** con la letra `f` o `F` seguido de una cadena escrita entre comillas (dobles o simples). Dentro de la cadena se pueden utilizar variables o expresiones que se escriben entre llaves `{}`. Por ejemplo:

```python
name = "Peter"
age = 25
formatted_string = f"My name is {name} and I am {age} years old."
print(formatted_string) # Output: My name is Peter and I am 25 years old.
```

En el ejemplo anterior, se reemplaza la variable `name` (nombre) por `{name}`y la variable `age` (edad) por `{age}` en la cadena f para crear la cadena final.

## Aplicaciones de los Python f strings

Las cadenas f pueden tener usos muy diversos. A continuación, te explicamos los más importantes.

### Realizar cálculos dentro de una cadena

Los f strings de Python son especialmente útiles cuando es necesario efectuar **operaciones aritméticas** dentro de una cadena. Gracias a ellos es posible definir una expresión compleja en una sola línea, tal y como se muestra en este ejemplo:

```python
num1 = 10
num2 = 5
result = f"The sum of {num1} and {num2} is {num1 + num2}"
print(result) # Output: The sum of 10 and 5 is 15
```

En este caso, la suma de `num1` y `num2` se realiza dentro de la cadena f, y el resultado se añade directamente a la cadena final.

### Python f strings y raw strings

Al combinar `r` (referido a raw strings) y `f` (referido a las cadenas formateadas o f strings), se crea un tipo especial de cadena en Python conocida como cadena rf. La cadena rf presenta entonces la funcionalidad de los raw strings, que **interpretan secuencias de escape literalmente**, así como la flexibilidad y potencia de los f strings, que permiten incrustar variables y expresiones directamente en una cadena.

```python
name = "User"
path = rf'C:\Users\Username\Documents\{name}\file.txt'
print(path) # Output: C:\Users\Username\Documents\User\file.txt
```

En este código, se utiliza la cadena rf para definir una ruta. Al utilizarse `{name}` dentro de la cadena rf, se causa la inserción directa de la variable `name`, mientras que la `r` situada delante de la cadena hace que la **barra invertida** `\` se trate como un carácter literal y no como parte de una secuencia de escape.

### La precisión de los números en coma flotante

Puedes especificar la cantidad de decimales de un número de cola flotante en la cadena formateada. Para ello, debes emplear **instrucciones de formato**:

```python
value = 3.14159265359
formatted_value = f"Rounded value = {value:.3f}"
print(formatted_value) # Output: Rounded value = 3.142
```

En este ejemplo, se define una variable `value` que contiene un número decimal. Después, se utiliza un f string para formatear este valor con tres decimales utilizando {value:.3f}. Finalmente, se imprime el resultado, que muestra el valor redondeado con tres decimales.

### Ancho y alineación

En los Python f strings es posible controlar el **aspecto de los valores insertados** dentro de un campo especificado a través del ancho y la alineación. Esta función sirve para colocar texto o números en un área específica y alinearlos a la izquierda, derecha o centrarlos.

Supongamos que tenemos el nombre `__Alice__` y queremos colocarlo en un campo de diez caracteres de ancho a la derecha. Habría que hacer lo siguiente:

```python
name = "Alice"
formatted_name = f"Hello, {name:>10}"
print(formatted_name) # Output: Hello,      Alice
```

Como el valor tiene menos de diez caracteres, se alinea a la derecha utilizando `{nombre:>10}`.

### Rellenar con ceros u otros caracteres

Al rellenar con ceros u otros caracteres, se influye en la alineación de los números de un campo. Puede ser útil cuando deben mostrarse los números en un formato fijo, por ejemplo para **indicar horas o valores numéricos**.

```python
number = 42
formatted_number = f"Number: {number:06}"
print(formatted_number) # Output: Number: 000042
```

En este caso, `:06` indica que el número `number` se introduce en un campo de seis dígitos, por lo que se rellenan los dígitos que faltan con ceros a la izquierda.

Para rellenar se pueden especificar también caracteres distintos de cero. Se utilizaría esta sintaxis:

```python
word = "Python"
formatted_word = f"Word: {word:_<10}"
print(formatted_word) # Output: Word: Python____
```


This is a markdown version of: [https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/python-f-strings/](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/python-f-strings/) for AI/LLM consumption.