Thật đáng ngạc nhiên, vì mục đích của YAML neo & tham chiếu là sao chép yếu tố ra khỏi tệp dữ liệu YAML, không có cách tích hợp để nối chuỗi bằng cách sử dụng referenc es. Trường hợp sử dụng của bạn xây dựng một tên đường dẫn từ các bộ phận là một ví dụ tốt - phải có nhiều công dụng như vậy.
May mắn thay có một cách đơn giản để thêm chuỗi nối vào YAML thông qua thẻ tùy chỉnh trong 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]
""")
mà kết quả trong:
{'user_dir': '/home/user', 'user_pics': '/home/user/pics'}
Bạn có thể thêm các mục vào mảng, như " "
hoặc "-"
, nếu chuỗi cần được phân tách.
Nguồn
2014-04-22 06:53:52
Cảm ơn bạn đã xóa thông tin đó. Silly tôi cho suy nghĩ này là có thể. –