如果我的文件包含如下结构的数据:
unknown|0
Action|1
Adventure|2
Animation|3
...
如何将“|
”前面的字符串和后面的数字分开,以便我可以创建一个哈希:
{"unknown"=> 0, "Action" => 1...}
答案 0 :(得分:3)
String#split
是你的朋友:
s = "unknown|0"
key, value = s.split("|")
hash = { key => value }
或者,如果您希望输入更少的内容并进行更多的混淆:
Hash[*s.split("|")]
修改
显然这不涉及从文件中读取行。
答案 1 :(得分:1)
SOOO丑陋但它有效!
h=Hash[*s.chomp.split("\n").map{|i| i.split("|")}.flatten]
答案 2 :(得分:1)
我认为最容易遵循的是:
hash = {}
data.each_line do |line|
split = line.split('|')
hash[split[0]] = split[1]
end
答案 3 :(得分:1)
鉴于文件 / tmp / foo ,您可以将整个文件解析为一行中的哈希,如下所示:
Hash[*IO.readlines('/tmp/foo').map(&:chomp).collect { |l| l.split('|') }.flatten]
它不是非常易读,但它确实有用。