gpt4 book ai didi

ruby - FasterCSV:几个分隔符

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

我的 Rails3 应用程序解析用户上传的 CSV 文件。
正如所料,用户会上传制表符分隔和逗号分隔的文件。
我想支持两者。

我的代码:

input = CSV.read(uploaded_io.tempfile, { encoding: "UTF-8", :col_sep => "\t"})

问题:如何将其更改为也支持逗号?

FasterCSV 的文档将 col_sep 描述为 放置在每个字段之间的字符串。 因此 :col_sep => ",\t" 将不起作用。

注意:里面的所有数据都是整数或标识符,因此有人在内容(不是分隔符)中使用 \t, 的可能性为零。所以在同一个文件中使用两个不同的定界符不是我明确想要阻止的。

最佳答案

解决方案一:

一个简单的方法是让用户通过下拉菜单选择他们在 CSV 文件中使用的分隔符,然后您只需在 CSV.read() 中设置该值即可。称呼。但我猜你想要它自动。 :-)

解决方案 2:

您可以使用正则 File.read() 读入 CSV 文件的第一行并通过将第一行与 /,/ 进行匹配来分析它然后反对 /\t/ ... 根据哪个 RegExp 匹配,您在 CSV.read() 中选择分隔符调用相应的(单个)分隔符。然后你用 CSV.read(..., :col_sep => single_separator ) 读入文件相应地。

但要小心:

一开始看起来很漂亮很优雅想用",\t"作为允许两者的方法调用中的分隔符——但请注意,这可能会引入一个严重的错误!

如果一个 CVS 文件偶然或偶然地同时包含制表符和逗号……那你会怎么做?两者分开?你怎么能确定?我认为这是一个错误,因为 CSV 分隔符在常规 CSV 文件中不会像这样“混合”出现——它总是 ','"\t"

所以我认为你不应该使用 ",\t" -- 这可能会导致巨大的问题,这可能是他们没有实现/允许 col_sep 的原因。接受 RegExp 的选项。

关于ruby - FasterCSV:几个分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7832343/

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