es sorprendente, ya que el propósito de YAML ancla & referencias es factorizar la duplicación de archivos de datos YAML, que no hay una manera integrada para concatenar cadenas utilizando referenc es. Su caso de uso de compilar un nombre de ruta a partir de partes es un buen ejemplo; debe haber muchos usos.
Afortunadamente hay una manera simple de agregar la concatenación de cadenas a YAML a través de etiquetas personalizadas en Python.
import yaml
## define custom tag handler
def join(loader, node):
seq = loader.construct_sequence(node)
return ''.join([str(i) for i in seq])
## register the tag handler
yaml.add_constructor('!join', join)
## using your sample data
yaml.load("""
user_dir: &DIR /home/user
user_pics: !join [*DIR, /pics]
""")
que se traduce en:
{'user_dir': '/home/user', 'user_pics': '/home/user/pics'}
Puede añadir más elementos a la matriz, como " "
o "-"
, si las cadenas deben estar delimitados.
Gracias por aclarar eso. Tonto por pensar que esto era posible. –