E 'sorprendente, dal momento che lo scopo della YAML ancoraggi & riferimenti è quello di fattore la duplicazione di file di dati YAML, che non ci sia un modo integrato per concatenare stringhe utilizzando referenc es. Il tuo caso d'uso di costruire un nome di percorso da parti è un buon esempio: ci devono essere molti di questi usi.
Fortunatamente esiste un modo semplice per aggiungere la concatenazione di stringhe a YAML tramite tag personalizzati in 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]
""")
che si traduce in:
{'user_dir': '/home/user', 'user_pics': '/home/user/pics'}
È possibile aggiungere altri elementi alla matrice, come " "
o "-"
, se le stringhe devono essere delimitate.
fonte
2014-04-22 06:53:52
Grazie per averlo chiarito. Sciocco per aver pensato che fosse possibile. –