Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 将制表符分隔文件中的选定列连接到键值对中_Ruby_Tab Delimited - Fatal编程技术网

Ruby 将制表符分隔文件中的选定列连接到键值对中

Ruby 将制表符分隔文件中的选定列连接到键值对中,ruby,tab-delimited,Ruby,Tab Delimited,我有一个以制表符分隔的文件,需要将其中的选择性列连接到一个键值对中。假设我的前三列保持不变,但在那之后,我可以期望任何数量的列。第三个后面的所有列都应该连接成一个键值对 这是我的数据集: 第1列第2列第3列第4列第5列 123445 结果 col1 col2 col3 col4 | col5 123col4=>4 | col5=>5 如果您有以下输入文件: col1,col2,col3,col4,col5 1,2,3,this,that 2,3,4,some,more 3,4,5,a,b 然后

我有一个以制表符分隔的文件,需要将其中的选择性列连接到一个键值对中。假设我的前三列保持不变,但在那之后,我可以期望任何数量的列。第三个后面的所有列都应该连接成一个键值对

这是我的数据集:

第1列第2列第3列第4列第5列

123445

结果

col1 col2 col3 col4 | col5

123col4=>4 | col5=>5


如果您有以下输入文件:

col1,col2,col3,col4,col5
1,2,3,this,that
2,3,4,some,more
3,4,5,a,b
然后,可以使用以下方法拉出标题、拆分和解构每一行:

header, *lines = File.readlines('var.txt')
header = header.split(',')
header[-1].chomp!
rest_fields = header.slice(3..-1)
recs = lines.map do |line|
  line.chomp!
  f1, f2, f3, *rest = line.split(',')
  pairs = {}
  rest_fields.each do |f|
    pairs[f] = rest.shift
  end
  [f1, f2, f3, pairs]
end


recs.each do |rec|
  puts rec.inspect
end
跑步可以带来:

["1", "2", "3", {"col4"=>"this", "col5"=>"that"}]
["2", "3", "4", {"col4"=>"some", "col5"=>"more"}]
["3", "4", "5", {"col4"=>"a", "col5"=>"b"}]

这就是您想要的吗?

请展示更多样品和预期结果。谢谢。你让我很开心。这正是我想要的。凯尔,我能够生成请求的数据集。非常感谢你的帮助