gpt4 book ai didi

Ruby CSV.open 需要去掉引号和空字符

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

我正在从数据库查询中检索大量结果哈希并将它们写入 csv 文件。下面的代码块获取结果并创建 CSV。使用 quote_char: 选项,它将用 NULL 字符替换引号,我需要这些字符才能正确创建制表符分隔的文件。

但是,NULL 字符在加载到目的地时会被转换为“”,因此我想删除它们。如果我省略 quote_char:,每个字段都用双引号引起来,这会导致相同的结果。

如何删除 NULL 字符?

begin
CSV.open("#{file_path}"'file.tab', "wb", Options = {col_sep: "\t", quote_char: "\0"}) do |csv|
csv << ["Key","channel"]
series_1_results.each_hash do |series_1|
csv << ["#{series_1['key']}","#{series_1['channel']}"]
end
end
end

最佳答案

csv documentation 中所述您必须将 quote_char 设置为某个字符,并且此字符将始终用于引用空字段。

在这种情况下,似乎唯一的解决方案是从创建的 csv 文件中删除使用过的 quote_chars。你可以这样做:

quotedFile = File.read("#{file_path}"'file.tab')
unquotedFile = quotedFile.gsub("\0", "")
File.open("#{file_path}"'unquoted_file.tab',"w") { |file| file.puts replace }

我在这里假设 NULL 是唯一的转义字段。如果不是这种情况,请使用默认的 quote_char: '"'gsub(',"",', '') 应该处理 almost包含特殊字符的字段的所有可能情况。

但是,正如您注意到的那样,您的查询结果很大,您自己准备 csv 文件并避免对输出进行两次处理可能更为实用。你可以简单地写:

File.open("#{file_path}"'unquoted_file.tab',"w") do |file|
csv.puts ["Key","channel"]
series_1_results.each_hash do |series_1|
csv.puts ["#{series_1['key']},#{series_1['channel']}"]
end
end

再一次,您可能需要处理带有特殊字符的字段。

关于Ruby CSV.open 需要去掉引号和空字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16477203/

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