我正在尝试使用CSV作为SiriProxy项目插件中的设置文件来使用wake-on-lan。 这个项目基于ruby。

所以csv如下:

Name, MACAddress
Desktop, 01-23-45-67-89-ab
Computer, 02-46-81-02-46-cd

等等...

所以我想要发生的是,例如当变量userAction是“桌面”时,我查询CSV并将MAC地址返回到另一个变量。 我迷失了如何做到这一点。 我见过csv和faster_csv,但不知道如何让这些工作像这样。

提前致谢!

===============>>#1 票数:9 已采纳

如果您尝试在Ruby 1.9中使用FasterCSV,则会收到警告,说标准的Ruby 1.9 CSV库实际上更快。 所以我使用了标准的Ruby CSV库。 这应该适用于Ruby 1.9或1.8.7。

require 'csv'

module MyConfig
  @mac_address_hash = {}
  CSV.foreach("config.csv") do |row|
    name, mac_address = row
    next if name == "Name"
    @mac_address_hash[name] = mac_address
  end

  puts "Now we have this hash: " + @mac_address_hash.inspect

  def self.mac_address(computer_name)
    @mac_address_hash[computer_name]
  end

end

puts "MAC address of Desktop: " + MyConfig.mac_address("Desktop")

此代码的输出是:

Now we have this hash: {"Computer"=>" 02-46-81-02-46-cd", "Desktop"=>" 01-23-45-67-89-ab"}
MAC address of Desktop:  01-23-45-67-89-ab

现在我想要你做的是仔细阅读这段代码的每一行,并试着了解它的作用以及为什么它是必要的。 从长远来看,这将使您成为更好的程序员。

您可以改进此代码,以便在第一次需要时延迟加载CSV文件。

===============>>#2 票数:6

我将展示简单易懂的方法。 像David Grayson那样在哈希中填充所有内容从长远来看效率要高得多,但是对于几次运行的脚本来说这可能就足够了。

require 'csv'
config = CSV.read('config.csv')
config.shift # Get rid of the header
# We're done! Start using like so:
p config.assoc("Computer").last #=>" 02-46-81-02-46-cd" 

如果领先的空间是不需要的:

config = CSV.read('config.csv', {:col_sep => ', '})

  ask by IMcD23 translate from so

未解决问题?本站智能推荐:

1回复

Ruby CSV导入麻烦

我试图在Rails应用中从csv导入数据,但是出了点问题: 我的csv看起来像这样: 也许是因为第一行(没有;;) 我的代码如下所示: 我正在使用更快的csv gem运行ruby 1.9+
1回复

进入那个数据库! 使用Ruby解析CSV

我有一个CSV文件,其格式如下: 如您所见,Ruby OO世界中的每一列都代表多种类型的混合-字符串,字符串,布尔值,整数。 现在,最终,我想解析文件中的每一行,确定适当的类型,然后通过Rails迁移将该行插入数据库。 例如: 救命!
3回复

ActiveRecord`from_csv`方法-如何使其更性感?

我编写了将数据从CSV加载到数据库的方法。 对我来说,这有点不性感,而且距离DRY很远: 如何使其更性感,或者可能已经有任何库可以加载数据?
1回复

特殊字符/中文文本无法在csv中正确呈现

我正在使用charset = utf-8; 在csv选项中。 尽管在浏览器中可以看到相同的文字,但中文字符和某些特殊字符(例如:-'»',)在csv中仍然无法正确呈现。
2回复

解析格式错误的CSV行

我正在解析以下CSV行。 我需要拯救下面看起来像"Malformed"畸形线条。 我可以使用什么正则表达式来执行此操作? 我需要考虑哪些因素?
1回复

带有rails CSV的MalformedCSVError(FasterCSV)

我现在正试图在rails中解析一些CSV时遇到严重问题。 基本上我的应用程序让用户上传CSV文件。 然后,应用程序转换文件以确保它是UTF-8格式,然后尝试解析并处理它。 每当应用程序尝试解析它时,我会收到MalformedCSVError,指出“第1行非法引用” 现在我不知道的是,
2回复

Activerecord找不到使用CSV信息创建的记录

当我从CSV文件创建记录时,Activerecord无法通过Record#find_by找到它们。 如果我通过rails控制台创建一个Record,它会按预期工作。 这是我通过CSV创建的代码: 以下是控制台中的一些示例: 任何帮助,将不胜感激。 如果重要的话,我使用的是R
1回复

导入产品问题

好的,所以我试图导入一个csv,它需要通过rails插入,或者以最快的方式插入到db中,所以我决定创建一个虚拟的rails应用程序来进行导入。 以下是一些代码,下面是我正在阅读的博客中的一些代码。 一切正常,但是csv的格式无法简化此过程。 这是格式以及我需要发生的事情。 抱
8回复

CSV - 未加引号的字段不允许\\ r或\\ n(第2行)

尝试解析CSV文件,但仍然收到错误消息未加引号的字段不允许\\ r或\\ n(第2行)。 。 我在这里找到了类似的主题,这里有一个提示: 但不幸的是他没有用...我无法更改CSV文件,所以我需要在代码中修复它。 编辑 CSV文件样本: 有什么办法吗? 非常感谢
2回复

CSV-Mapper没有这样的文件或目录

我正在使用csv-mapper gem导入一个csv文件。 当我在脚本/控制台的README( http://github.com/pillowfactory/csv-mapper )中使用示例代码时,它的效果很好。 但是,当我创建一个Web表单并使用它上传一个csv文件时,出现错误“没有这