Tôi có một dự án python nơi tôi muốn sử dụng YAML (pyYaml 3.11), đặc biệt vì nó "đẹp" và dễ dàng cho người dùng chỉnh sửa trong trình soạn thảo văn bản nếu cần thiết. Vấn đề của tôi là, nếu tôi mang YAML vào một ứng dụng python (như tôi sẽ cần) và chỉnh sửa nội dung (như tôi sẽ cần) thì việc viết tài liệu mới thường không đẹp như những gì tôi bắt đầu.sản lượng khá với pyyaml
Tài liệu pyyaml khá kém - thậm chí không ghi tài liệu tham số vào hàm kết xuất. Tôi đã tìm thấy http://dpinte.wordpress.com/2008/10/31/pyaml-dump-option/. Tuy nhiên, tôi vẫn thiếu thông tin tôi cần. (Tôi bắt đầu nhìn vào nguồn gốc, nhưng nó dường như không hấp dẫn nhất. Nếu tôi không có giải pháp ở đây, thì đó là sự truy đòi duy nhất của tôi.)
Tôi bắt đầu với một tài liệu như sau:
- color green : inputs : - port thing : widget-hint : filename widget-help : Select a filename - port target_path : widget-hint : path value : 'thing' outputs: - port value: widget-hint : string text : | I'm lost and I'm found and I'm hungry like the wolf.
Sau khi tải vào python (yaml.safe_load (s)), tôi thử một vài cách bán phá giá nó ra:
>>> print yaml.dump(d3, default_flow_style=False, default_style='') - color green: inputs: - port thing: widget-help: Select a filename widget-hint: filename - port target_path: value: thing widget-hint: path outputs: - port value: widget-hint: string text: 'I''m lost and I''m found and I''m hungry like the wolf. '
>>> print yaml.dump(d3, default_flow_style=False, default_style='|') - "color green": "inputs": - "port thing": "widget-help": |- Select a filename "widget-hint": |- filename - "port target_path": "value": |- thing "widget-hint": |- path "outputs": - "port value": "widget-hint": |- string "text": | I'm lost and I'm found and I'm hungry like the wolf.
Lý tưởng nhất, tôi muốn "chuỗi ngắn" để không sử dụng dấu ngoặc kép, như trong kết quả đầu tiên. Nhưng tôi muốn các chuỗi nhiều dòng được viết dưới dạng các khối, như với kết quả thứ hai. Tôi đoán về cơ bản, tôi đang cố gắng giảm thiểu một sự bùng nổ các trích dẫn không cần thiết trong tập tin mà tôi cảm nhận được sẽ làm cho việc chỉnh sửa trong trình soạn thảo văn bản trở nên khó chịu hơn nhiều.
Có ai có kinh nghiệm với điều này không?
@AndySmith Ok. Cho phép xóa những nhận xét này, vì họ sẽ không giúp đỡ bất kỳ ai. – Anthon
Có dễ dàng chỉ định trong ruamel.yaml rằng các chuỗi nhiều dòng nên được viết dưới dạng các khối (với '|') và chuỗi ngắn không được nhận báo giá, mà không có tệp yaml để gọi một chuyến đi khứ hồi không? – oulenz
@oulenz Điều đó phụ thuộc vào sự dễ dàng của bạn, tất nhiên bạn phải có một số quy tắc (ví dụ: bất kỳ chuỗi nào có dòng mới phải là một khối vô hướng chữ; bất kỳ không có dấu cách nào đều không được bỏ phiếu) nếu bạn không muốn sử dụng bằng tay. Tại sao bạn không hỏi một câu hỏi ở đây về SO về điều đó, nếu bạn quan tâm đến việc đó được thực hiện? – Anthon