我有一个文件,每行都有一个名称/值对,我想打开文件,读取每一行并初始化一个哈希.
文件:
john, 234
joe, 2222
Run Code Online (Sandbox Code Playgroud)
并加载一个哈希,以便我可以遍历键值对.
Dig*_*oss 20
Hash[*File.read('f.txt').split(/[, \n]+/)]
Run Code Online (Sandbox Code Playgroud)
Nak*_*lon 10
Hash[File.read('some.txt').split("\n").map{|i|i.split(', ')}]
Run Code Online (Sandbox Code Playgroud)
要么
Hash[File.read('some.txt').scan(/(.+?), (.+)/)]
Run Code Online (Sandbox Code Playgroud)
file_data = {}
File.open('some_file', 'r') do |file|
file.each_line do |line|
line_data = line.split(',')
file_data[line_data[0]] = line_data[1]
end
end
Run Code Online (Sandbox Code Playgroud)
您可能想要添加一些验证,但这是完成您需要的简单方法。
f = <<EOF
john, 234
joe, 2222
EOF
p Hash[*f.split(/, |\n/)]
Run Code Online (Sandbox Code Playgroud)
#split方法给出的数组看起来像[“ john,”,“ 234”,“ joe”,“ 2222”]。*(又名splat)运算符将此数组转换为一堆参数。Hash#[]接收一堆参数(当偶数个参数时)并传递一个哈希值。
| 归档时间: |
|
| 查看次数: |
15048 次 |
| 最近记录: |