我确实有一个文本文件如下:
雇员details.txt
Raja Palit 77489 24 84 12/12/2011
Mathew bargur 77559 25 88 01/12/2011
harin Roy 77787 24 80 12/12/2012
Soumi paul 77251 24 88 11/11/2012我想要的文件如下:
预期文件:
Raja,Palit,77489,24,84,12/12/2011
Mathew,bargur,77559,25,88,01/12/2011
harin,Roy,77787,24,80,12/12/2012
Soumi,paul,77251,24,88,11/11/2012我尝试了以下几点:
IO.foreach('D://docs//details.txt') do |line|
splits = line.split("\t")
col1, col2, col3, col4, col5, col6 = splits
splits[6..-1].join(',')
end发布于 2013-01-27 22:04:20
字符串附带一个squeeze方法,它将参数中char(s)的运行压缩为一个字符。在这种情况下,它将多个空格缩小为一个空格,然后用逗号替换:
File.open("test.txt") do |in_file|
File.open("test.csv", 'w') do |out_file| #the 'w' opens the file for writing
in_file.each {|line| out_file << line.squeeze(' ').gsub(' ', ',') }
end # closes test.csv
end # closes test.txt发布于 2013-01-27 21:45:54
您可以使用正则表达式将任何空白字符替换为逗号:
my_string.sub! /\s/g, ','如果要丢弃空字段,可以使用以下内容:
my_string.sub! /\s+/g, ','另一种选择是在空格上分割它,并在逗号上加入它。这还将丢弃空字段:
my_string = my_string.split(' ').join(',')发布于 2013-01-27 21:54:53
File.open("details.txt", "r+"){|io| io.write(io.read.gsub(/[ \t]+/, ","))}https://stackoverflow.com/questions/14552652
复制相似问题