Tôi cần tải tệp yaml vào Hash,
Tôi nên làm gì?Làm cách nào để phân tích cú pháp tệp yaml thành băm và/hoặc mảng ruby?
Trả lời
Sử dụng các module YAML:
http://ruby-doc.org/stdlib-1.9.3/libdoc/yaml/rdoc/YAML.html
node = YAML::parse(<<EOY)
one: 1
two: 2
EOY
puts node.type_id
# prints: 'map'
p node.value['one']
# prints key and value nodes:
# [ #<YAML::YamlNode:0x8220278 @type_id="str", @value="one", @kind="scalar">,
# #<YAML::YamlNode:0x821fcd8 @type_id="int", @value="1", @kind="scalar"> ]'
# Mappings can also be accessed for just the value by accessing as a Hash directly
p node['one']
# prints: #<YAML::YamlNode:0x821fcd8 @type_id="int", @value="1", @kind="scalar">
http://yaml4r.sourceforge.net/doc/page/parsing_yaml_documents.htm
Điều này có xu hướng trả về Syck :: Bản đồ (hoặc các đối tượng tương tự), không phải là băm. Bất kỳ cách nào để có nó trở lại (hoặc chuyển đổi sang) một Hash ruby thường xuyên? – elsurudo
Tôi sẽ sử dụng một cái gì đó như:
hash = YAML.load(File.read("file_path"))
Cũng trong các biểu tượng Ruby 2.2 là GC'd. – Kris
[Câu trả lời của tôi] (https://stackoverflow.com/a/45068104/3042952) được dựa trên điều này, ngoại trừ nó làm cho nó đơn giản và dễ đọc hơn bằng cách sử dụng YAML.load_file thay thế. –
Bạn có thể chạy vào một vấn đề nêu tại this related question, cụ thể là, tệp hoặc luồng YAML chỉ định một đối tượng mà trình tải YAML sẽ cố gắng chuyển đổi dữ liệu thành. Vấn đề là bạn sẽ cần một Gem liên quan biết về đối tượng được đề cập.
Giải pháp của tôi khá tầm thường và được cung cấp dưới dạng câu trả lời cho câu hỏi đó. Thực hiện việc này:
yamltext = File.read("somefile","r")
yamltext.sub!(/^--- \!.*$/,'---')
hash = YAML.load(yamltext)
Thực chất, bạn tách văn bản phân loại đối tượng khỏi văn bản yaml. Sau đó, bạn phân tích/tải nó.
Một phiên bản đơn giản của câu trả lời Venables':
hash = YAML.load_file("file_path")
- 1. Làm cách nào để phân tích cú pháp YAML thành băm/đối tượng?
- 2. Làm cách nào để phân tích cú pháp mảng numpy?
- 3. Trình phân tích cú pháp YAML của Ruby bằng cách truyền hàm tạo
- 4. làm cách nào để phân tích cú pháp tệp dtd
- 5. Psych :: SyntaxError không thể phân tích cú pháp YAML
- 6. Phân tích cú pháp YAML, quay lại với số dòng
- 7. Trình phân tích cú pháp YAML trong Delphi?
- 8. Phân tích cú pháp một mảng JSON thành một NSDictionary
- 9. Làm thế nào để phân tích cú pháp YAML trong trình duyệt?
- 10. Phân tích cú pháp Ruby: phân tích cú pháp nhiều dòng
- 11. Kết hợp phân tích cú pháp phân tích cú pháp, phân tích cú pháp và phân tích cú pháp rừng
- 12. Cách phân tích cú pháp hiệu quả các tệp văn bản lớn trong Ruby
- 13. Làm cách nào để phân tích cú pháp URL web?
- 14. Làm cách nào để phân tích cú pháp logic boolean?
- 15. Phân tích các tệp YAML trong C++
- 16. Phân tích cú pháp tệp YAML bằng Python và truy cập dữ liệu?
- 17. Phân tích cú pháp thành Nullable Enum
- 18. Làm cách nào để phân tích cú pháp một đoạn văn bản thành các câu? (perferrably trong Ruby)
- 19. Chuỗi phân tích cú pháp thành Double.NaN
- 20. Chuỗi phân tích cú pháp thành TimeSpan
- 21. Làm cách nào để sử dụng Nokogiri để phân tích cú pháp tệp XML?
- 22. C# Phân tích cú pháp tệp XML
- 23. Javascript cách phân tích cú pháp mảng JSON
- 24. Ocaml - Tệp và phân tích cú pháp
- 25. Cách phân tích cú pháp tệp XML trong RapidXML
- 26. cách phân tích cú pháp xml thành đối tượng java?
- 27. Cách phân tích cú pháp JSON (AS3)
- 28. Làm cách nào để phân tích cú pháp tệp JSON bằng cách sử dụng JSON.net
- 29. Làm cách nào để phân tích cú pháp tệp văn bản bằng cách sử dụng javascript
- 30. Phân tích cú pháp tài liệu XML trong Ruby
Vui lòng cập nhật câu trả lời của bạn lựa chọn. Người bạn đã chọn không trả lời câu hỏi thực tế của bạn (bất kể câu hỏi có nhiều thông tin hơn hay không) – Volte