我有一个制表符分隔文件,其中前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
答案 0 :(得分: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
答案 1 :(得分: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"]