gpt4 book ai didi

ruby : How can I detect/intelligently guess the delimiter used in a CSV file?

转载 作者:数据小太阳 更新时间:2023-10-29 07:09:05 26 4
gpt4 key购买 nike

我需要能够确定我的 Ruby 项目中的 csv 文件中使用了哪个分隔符(逗号、空格或分号)。我知道,csv 模块中的 Python 中有一个 Sniffer 类,可用于猜测给定文件的分隔符。 Ruby 中有类似的东西吗?非常感谢任何形式的帮助或想法。

最佳答案

看起来 py 实现只检查几种方言:excel 或 excel_tab。因此,仅检查 ",""\t" 的简单实现是:

COMMON_DELIMITERS = ['","',"\"\t\""].freeze

def sniff(path)
first_line = File.open(path).first
return unless first_line

snif = {}
COMMON_DELIMITERS.each do |delim|
snif[delim] = first_line.count(delim)
end
snif = snif.sort { |a,b| b[1]<=>a[1] }

snif[0][0] if snif.size > 0
end

注意:这将返回它找到的完整分隔符,例如",",所以要获得 ,,您可以将 snif[0][0] 更改为 snif[0][0 ][1].

此外,我正在使用 count(delim) 因为它更快一些,但是如果您添加了一个由两个(或更多)相同类型的字符组成的分隔符,例如 --,那么在权衡类型时它可能每次出现两次(或更多次),所以在这种情况下,使用 scan(delim).length 可能会更好。

关于 ruby : How can I detect/intelligently guess the delimiter used in a CSV file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14693929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com