【问题标题】:Ruby CSV - Trying to wrap output in double quotes, getting """Hello World""" instead of "Hello World"Ruby CSV - 尝试将输出用双引号括起来,得到“”“Hello World”“”而不是“Hello World”
【发布时间】:2013-03-09 07:35:12
【问题描述】:
require 'csv'
s = "\"Hello World\""

CSV.open('output.txt', 'w') do |csv|
    csv << [s]
end

在我的文件中,我得到:

"""Hello World"""

多余的引号是什么意思,正确的方法是什么?我不希望所有字段都用引号括起来,只是一些。使用 ruby​​ 1.9.3p194

【问题讨论】:

  • 在开放式办公室中,我得到了您正在寻找的格式,没有花精力进行屏幕截图,但它对我有用
  • 如果您输出到 .txt 文件,或在文本编辑器中打开 .csv 文件,输出会不正确。我不确定为什么在电子表格应用程序中打开 .csv 会显示正确的内容。我还可以使用 Excel 获得正确的输出查看。

标签: ruby csv


【解决方案1】:

这是正确的。 Quote characters are escaped in CSV files by doubling。并且所有包含逗号、换行符和/或引号字符的字段都需要用引号引起来。

所以第一个引号开始一个带引号的字段,第二个和第三个引号编码实际的引号字符。

变成

Hello,"Field, with comma","2"" by 4""",123

【讨论】:

  • 我明白了。有没有办法改变这种行为?在我的实际项目中,我试图输出以管道分隔的 .txt 文件,并且我需要将某些描述性字段包装在一组双引号中以被目标应用程序接受。它是 LEDES 法律发票格式。
  • @codeself:嗯,是的,但是你不能使用csv,因为那不再是 CSV 文件了。只需通过| 加入字符串,然后在此之前手动将描述性字段用引号括起来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-12
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-04
  • 2014-10-15
  • 2023-04-11
相关资源
最近更新 更多