【问题标题】:Ruby: CSV to YAML红宝石:CSV 到 YAML
【发布时间】:2014-02-22 18:24:46
【问题描述】:

我有以下 csv 示例:

en.activerecord.models.admin_user.one;Guide
en.activerecord.models.admin_user.other;Guides
en.simple_captcha.placeholder;Type here

是否有 ruby​​ gem 或方法可以将其转换为 Yaml 文件:

en:
  activerecord:
    models:
      admin_user:
        one: Guide
        other: Guides
  simple_captcha:
    placeholder: Type here

我仍在尝试(使用树数据模型)但没有结果。

有什么想法吗?

【问题讨论】:

  • 将您的 CSV 转换为哈希,然后将哈希写入 YAML。关于将点分隔键转换为嵌套哈希有很多问题。

标签: ruby-on-rails ruby csv gem yaml


【解决方案1】:
require 'yaml'  
hash = {}
file =  "en.activerecord.models.admin_user.one;Guide
en.activerecord.models.admin_user.other;Guides
en.simple_captcha.placeholder;Type here"
file.split("\n").each { |line| hash.deep_merge!(line.split(/\.|;/).reverse.inject() { |m,v| {v => m} }) }

puts YAML.dump(hash)
---
en:
  activerecord:
    models:
      admin_user:
        one: Guide
        other: Guides
  simple_captcha:
    placeholder: Type here

【讨论】:

  • 谢谢。哈希应该是 {} 在开头?
  • 在将文件转换为 Rails 中的本地化 yaml 时很有用。另请注意,deep_merge! 方法是 rails 方法,因此不能直接在普通 ruby​​ 脚本中使用。
猜你喜欢
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多