首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将CSV数据导入拼音数组/变量

将CSV数据导入拼音数组/变量
EN

Stack Overflow用户
提问于 2011-12-12 03:12:52
回答 2查看 23K关注 0票数 4

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

因此csv如下所示:

代码语言:javascript
复制
Name, MACAddress
Desktop, 01-23-45-67-89-ab
Computer, 02-46-81-02-46-cd

以此类推。

例如,当变量userAction是“桌面”时,我查询CSV,它将MAC地址返回到另一个变量中。我不知道该怎么做。我看过csv和faster_csv,但不知道如何让它们像这样工作。

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-12 03:32:45

如果你尝试在Ruby1.9中使用FasterCSV,你会得到一个警告,说标准的Ruby1.9CSV库实际上更快。所以我使用了标准的Ruby CSV库。这应该可以在Ruby 1.9或1.8.7中工作。

代码语言:javascript
复制
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")

此代码的输出为:

代码语言:javascript
复制
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文件时延迟加载该文件。

票数 10
EN

Stack Overflow用户

发布于 2011-12-12 04:37:38

我将演示极其简单的方法。从长远来看,像David Grayson那样将所有内容都填充到散列中的效率要高得多,但对于运行几次的脚本来说,这可能就足够了。

代码语言:javascript
复制
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" 

如果前导空格是不需要的:

代码语言:javascript
复制
config = CSV.read('config.csv', {:col_sep => ', '})
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8466667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档