Skip to content

Instantly share code, notes, and snippets.

@hcosta
Created July 20, 2022 09:56
Show Gist options
  • Save hcosta/bb22b73199b3dc01e1ec91c05b346daa to your computer and use it in GitHub Desktop.
Save hcosta/bb22b73199b3dc01e1ec91c05b346daa to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# f-Strings\n",
"\n",
"Desde Python 3.6 encontramos una nueva funcionalidad que simplificar el formateo gracias a la interpolación de cadenas. \n",
"\n",
"En lugar de poner esto:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hola Héctor\n"
]
}
],
"source": [
"nombre = \"Héctor\"\n",
"cadena = \"Hola {}\".format(nombre)\n",
"print(cadena)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Podemos indicar que la cadena está formateada añadiendo `f\"\"` delante y pasando directamente las variables o datos interpretados:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hola Héctor\n"
]
}
],
"source": [
"nombre = \"Héctor\"\n",
"cadena = f\"Hola {nombre}\"\n",
"print(cadena)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Como véis es muy útil y permite ahorrarnos algo de código."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Contenido interpretado"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"La suma de 10 y 5 es 15\n"
]
}
],
"source": [
"a, b = 10, 5\n",
"\n",
"print(f\"La suma de {a} y {b} es {a+b}\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"¡Hola Pepe!\n"
]
}
],
"source": [
"def func():\n",
" return \"Pepe\"\n",
"\n",
"print(f\"¡Hola {func()}!\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"El número dos es 2\n"
]
}
],
"source": [
"numero = {\"uno\":1, \"dos\": 2, \"tres\": 3}\n",
"\n",
"print(f\"El número dos es {numero['dos']}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Formateos avanzados"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Alineamientos"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hola mundo \n"
]
}
],
"source": [
"print(f\"{'Hola mundo':40}\") # a la izquierda 40 caracteres"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hola mundo \n",
" Hola mundo\n",
" Hola mundo \n"
]
}
],
"source": [
"texto = \"Hola mundo\"\n",
"\n",
"print(f\"{texto:40}\") # a la izquierda 40 caracteres\n",
"print(f\"{texto:>40}\") # a la derecha 40 caracteres\n",
"print(f\"{texto:^40}\") # al centro 40 caracteres"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Truncamiento"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hola\n"
]
}
],
"source": [
"print(f\"{texto:.4}\") # primeros 4 caracteres"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Truncamiento con variables"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hola\n"
]
}
],
"source": [
"limite = 4\n",
"\n",
"print(f\"{texto:.{limite}}\") # primeros 4 caracteres"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Alineamiento con truncamiento"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Hola\n",
"Hola \n",
" Hola \n"
]
}
],
"source": [
"print(f\"{texto:>30.4}\")\n",
"print(f\"{texto:<30.4}\")\n",
"print(f\"{texto:^30.4}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Alineamiento con truncamiento y variables"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Hola\n",
"Hola \n",
" Hola \n"
]
}
],
"source": [
"limite = 4\n",
"longitud = 30\n",
"\n",
"print(f\"{texto:>{longitud}.{limite}}\")\n",
"print(f\"{texto:<{longitud}.{limite}}\")\n",
"print(f\"{texto:^{longitud}.{limite}}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Formateo de números enteros, rellenados con espacios"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 1\n",
" 10\n",
" 100\n",
" 1000\n",
" 10000\n",
"100000\n"
]
}
],
"source": [
"print(f\"{1:6d}\")\n",
"print(f\"{10:6d}\")\n",
"print(f\"{100:6d}\")\n",
"print(f\"{1000:6d}\")\n",
"print(f\"{10000:6d}\")\n",
"print(f\"{100000:6d}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Formateo de números enteros, rellenados con ceros"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"000001\n",
"000010\n",
"000100\n",
"001000\n",
"010000\n",
"100000\n"
]
}
],
"source": [
"print(f\"{1:06d}\")\n",
"print(f\"{10:06d}\")\n",
"print(f\"{100:06d}\")\n",
"print(f\"{1000:06d}\")\n",
"print(f\"{10000:06d}\")\n",
"print(f\"{100000:06d}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Formateo de números flotantes, rellenados con espacios"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 3.142\n",
"153.210\n"
]
}
],
"source": [
"# 4 dígitos: 3 enteros, 1 punto y 3 decimales\n",
"\n",
"print(f\"{3.1415926:7.3f}\") \n",
"print(f\"{153.21:7.3f}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Formateo de números flotantes, rellenados con ceros"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0003.1416\n",
"0153.2100\n"
]
}
],
"source": [
"# 9 dígitos: 4 enteros, 1 punto y 4 decimales\n",
"\n",
"print(f\"{3.1415926:09.4f}\") \n",
"print(f\"{153.21:09.4f}\") "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Formateo de números con variables"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0000000003.1415926000\n"
]
}
],
"source": [
"numero = 3.1415926\n",
"longitud = 21 # 1 para el decimal\n",
"decimales = 10\n",
"\n",
"print(f\"{numero:0{longitud}.{decimales}f}\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.5"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment