我有一个文件,每行上都有一个名称/值对,我想打开文件,读取每行并初始化散列。使用Ruby,将包含名称/值对的文件读取到散列中
文件:
john, 234
joe, 2222
和负载哈希这样我就可以通过键值对循环。
我有一个文件,每行上都有一个名称/值对,我想打开文件,读取每行并初始化散列。使用Ruby,将包含名称/值对的文件读取到散列中
文件:
john, 234
joe, 2222
和负载哈希这样我就可以通过键值对循环。
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
您可能想要添加一些验证,但这是一种简单的方法来完成您所需要的。
Hash[File.read('some.txt').split("\n").map{|i|i.split(', ')}]
或
Hash[File.read('some.txt').scan(/(.+?), (.+)/)]
f = <<EOF
john, 234
joe, 2222
EOF
p Hash[*f.split(/, |\n/)]
#split给出了一个阵列看起来像[ “约翰”, “234”, “乔,”, “2222”]的方法。 *(AKA splat)运算符将此数组转换为一堆参数。哈希#[]采用这一堆参数(当有偶数个参数时)并提供一个哈希值。
+1,yay splat。可能需要一个正则表达式。我现在要修改我的答案... – DigitalRoss 2010-11-07 23:34:50
@DigitalRoss:是的,忽略了尾随的逗号。添加了正则表达式。 – steenslag 2010-11-08 07:33:57
这是一份工作安全片段! hehe – Blankman 2010-11-07 21:56:07
扫描对于不包含一致格式的文件来说非常有用。 – 2018-02-02 18:56:52