如何在ruby中从csv文件中删除分隔符
我正在读取一个文件,该文件由下面的“制表符空间”或“分号(;)”或“逗号(,)”分隔。代码仅分隔制表符空间,但我希望所有3个都被选中。比如,如果一个文件是逗号分隔的,那么它也应该适用于该文件。请帮忙如何在ruby中从csv文件中删除分隔符,ruby,csv,Ruby,Csv,我正在读取一个文件,该文件由下面的“制表符空间”或“分号(;)”或“逗号(,)”分隔。代码仅分隔制表符空间,但我希望所有3个都被选中。比如,如果一个文件是逗号分隔的,那么它也应该适用于该文件。请帮忙 #!/usr/bin/ruby require 'csv' test = CSV.read('test.csv', headers:true, :col_sep => "\t") x = test.headers puts x 看起来好像:col_sep不能是Regexp,这可能解决了
#!/usr/bin/ruby
require 'csv'
test = CSV.read('test.csv', headers:true, :col_sep => "\t")
x = test.headers
puts x
看起来好像
:col_sep
不能是Regexp,这可能解决了您的问题
一种可能的解决方案是分析CSV文件的头并计算可能出现的分隔符:
require 'csv'
possible_separators = ["\t", ';', ',']
lines_to_analyze = 1
File.open('test.csv') do |csv|
head = csv.first(lines_to_analyze).join
@col_sep = possible_separators.max_by { |sep| head.count(sep) }
end
@col_sep
#=> ";"
然后,您可以使用:
test = CSV.read('test.csv', headers:true, :col_sep => @col_sep)
x = test.headers
puts x
# a
# b
# c
x
中的值不包含任何分隔符。看起来:col_sep
不能是Regexp,这可能解决了您的问题
一种可能的解决方案是分析CSV文件的头并计算可能出现的分隔符:
require 'csv'
possible_separators = ["\t", ';', ',']
lines_to_analyze = 1
File.open('test.csv') do |csv|
head = csv.first(lines_to_analyze).join
@col_sep = possible_separators.max_by { |sep| head.count(sep) }
end
@col_sep
#=> ";"
然后,您可以使用:
test = CSV.read('test.csv', headers:true, :col_sep => @col_sep)
x = test.headers
puts x
# a
# b
# c
x
中的值不包含任何分隔符。但是我需要从标题中删除制表符空格/分号/逗号,因为我需要标题名称来创建表。怎么做@Eric Duminilbut我需要从标题中删除制表符空格/分号/逗号,因为我需要标题名来创建表。怎么做@埃里克·杜米尼尔