Tôi không biết bạn có cần YAML hay không. Ngoài việc sử dụng thẻ YAML, có vẻ như bạn không có hứng thú với tài liệu YAML. Vậy tại sao không sử dụng Jinja2 hoặc một số ngôn ngữ mẫu?
from jinja2 import Template
tmpl = Template(u'''\
init_config: {}
instances:
- host: {{ IP }}
username: {{ username }}
password: {{ password }}
''')
print tmpl.render(
IP=u"1.2.3.4",
username=u"Username",
password=u"Password"
)
Tôi không biết nếu nó là một ý tưởng tốt, nhưng nếu bạn chỉ cần để có được một tập tin với một số lĩnh vực thay đổi, bạn không cần phải thực sự phân tích các tài liệu YAML và có thể được hưởng lợi từ một Template ngôn ngữ trực tiếp.
Bonus: Sử dụng trường hợp
Tôi đã làm việc với các tài liệu YAML rất phức tạp, trong đó có thẻ chưa biết
...
propertiesIDs: { 1, 2, 3, 4 }
globalID: !myapplication.InterfaceID &primitiveID
replication: !myapplication.replication
beginDate: 2012-09-10T20:00:03
endDate: 2020-09-10T20:00:04
replicant_uuid:
? 17169504-B6AB-11E4-8437-36E258BB2172
? 206B5842-B6AB-11E4-AAC3-36E258BB2172
...
Thực hiện phân tích cú pháp hợp lệ của tài liệu này là khó khăn và thời gian -trọng lượng. Tôi chỉ cần điền một số giá trị, và YAML được gửi đến một ứng dụng của bên thứ ba. Vì vậy, thay vì phân tích cú pháp YAML hoặc cố gắng tạo một tài liệu hợp lệ trực tiếp bằng pyyaml, thì đơn giản hơn (hiệu quả thời gian hơn, ít bị lỗi) để tạo nó trực tiếp thông qua các khuôn mẫu. Hơn nữa, các ngôn ngữ mẫu có thể dễ dàng được sử dụng với các vòng để điền các trường có kích thước động.
Nếu bạn sử dụng [PyYaml] (http://pyyaml.org/wiki/PyYAMLDocumentation), bạn có thể sử dụng Loader để load d ata và Dumper để ghi dữ liệu vào tệp. Dữ liệu được tải là một từ điển thông thường trong Python, do đó bạn có thể truy cập phần tử bằng khóa và do đó thay đổi nó theo ý muốn. –
Không rõ nếu bạn muốn một công cụ mẫu (và đang chuyển hướng các câu trả lời hữu ích bằng cách quá hẹp) hoặc chỉ đơn giản là muốn phân tích cú pháp YAML và thay thế một số giá trị chuỗi trên dữ liệu được phân tích cú pháp. Cụ thể hơn và giải thích những gì bạn cần đạt được và tại sao. – MariusSiuram
Đây là một tập tin. Tôi cần phân tích cú pháp tệp yaml và thay thế nội dung. – Chetan