我有一个名为" output.txt":
的文件 "name": "abc",
"age": 28,
"name": "xxx",
"age": 11,
"name": "yyyb",
"age": 15,
我想读取文件并在一行上一个接一个地打印名称和年龄值:
abc 28
xxx 11
yyyb 15
我写的代码是:
file_data = {}
object= File.open('output.txt', 'r') do |file|
file.each_line do |line|
key,value = line
file_data[value] = key
puts file_data
我得到了:
{nil=>" \"name\": \"abc"\",\n"}
{nil=>" \"age\": 28,\n"}
{nil=>" \"name\": \"11"\",\n"}
{nil=>" \"age\": false,\n"}
{nil=>" \"name\": \"yyyb\",\n"}
{nil=>" \"age\": 15,\n"}
答案 0 :(得分:0)
最好的方法是使用一些流行的格式,例如YAML
或JSON
,这样您就可以使用某些库来处理它。你也可以用这样的代码实现它:
file_data = ""
object= File.open('output.txt', 'r') do |file|
file.each_line do |line|
key, value = line.split(':').map{|e| e.strip.gsub(/(,|\")/,'')}
file_data << (key == 'name' ? "#{value} " : "#{value}\n")
end
end
puts file_data
答案 1 :(得分:0)
File.read('output.txt')
.split(/\s*,\s*/)
.each_slice(2)
.each do |name, age|
puts [name[/(?<=: ").*(?=")/], age[/(?<=: ).*/]].join ' '
end