繁体   English   中英

如何从ruby中的csv文件中删除分隔符

[英]How to remove the delimiters from a csv file in ruby

我正在读取一个文件,该文件由“制表符空格”或“分号(;)”或“逗号(,)”分隔,代码仅分隔制表符空格,但我希望检查所有3。 就像文件以逗号分隔一样,它也适用于那个。 请帮忙!

#!/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的值不包含任何分隔符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM