我有一個文件,每行上都有一個名稱/值對,我想打開文件,讀取每行並初始化散列。使用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