1

我有一个制表符分隔文件,其中前 10 列始终存在并保持在同一位置,但在第 10 列之后,列数可以更改。我想按原样保留前 10 列,并将其余列连接成一列,以|.

这是示例数据:

列: col1 col2 ... col 10 col11 col12 col13

值:1 2 ... 10 11 12 13

结果:

列: col1 col2 ... col10 col11|col12|col13

值:1 2 ... 10 11 | 12 | 13

4

2 回答 2

2

你可以从类似的东西开始

IO.foreach('path/to/file') do |line|
  splits = line.split("\t")

  col1, col2, col3, col4, col5, col6, col7, col8, col9, col10 = splits


  col11 = splits[10..-1].join('|')
end
于 2012-11-19T23:05:15.070 回答
2

看看 ruby​​ 的split方法——它有一个可选limit参数。假设您的数据在row每一行的变量中:

values = row.split("\t", 11)

示例(为简洁起见,可变部分从第 3 列开始):

s = "1\t2\t3\t4" 
cols = s.split("\t", 3) 
# result: ["1", "2", "3\t4"] 

然后您可以更改最后一个元素:

cols[2] = cols.last.gsub("\t", "|")
# cols is now: ["1", "2", "3|4"] 
于 2012-11-19T23:22:35.357 回答