Cyr*_*ris -1 ruby csv spreadsheet
这是一个想法:我有一个 2D 数组,其中包含带有换行符的非转义字符串,\n有时甚至是用作 CSV 分隔符的字符,例如;.
我需要能够轻松地将此类数据从远程 Ruby 控制台的输出复制并粘贴到本地 Excel 文件或在线 Google 电子表格中。
它曾经工作正常,直到我遇到带有换行符和分号的数据,使用:
class Array
def puts_csv
map { |row| row.join(';') }.each(&method(:puts))
end
end
[["A1", "B1"], ["A2", "B2"], ["A3", "B3"]].puts_csv
# =>
A1;B1;
A2;B2;
A3;B3;
Run Code Online (Sandbox Code Playgroud)
这会在控制台上输出一个列表,我可以很容易地将其复制/粘贴到我的电子表格应用程序中并选择;作为输入分隔符。
但现在我必须处理包含应该转义的字符的字符串输入,如逗号、分号或换行符。这完全破坏了我对数据的复制/粘贴。
样本数据:
array2D = [
["name", "school", "comment"],
["Jean François", "ENS", "Lorem ipsum dolor sit amet; consectetur,\nadipiscing elit, sed do eiusmod tempor"
]
Run Code Online (Sandbox Code Playgroud)
我当前的方法给出了三行,因为它使用分号分隔符换行:
name;school;comment
Jean François;ENS;Lorem ipsum dolor sit amet;consectetur,
adipiscing elit, sed do eiusmod tempor
Run Code Online (Sandbox Code Playgroud)
目标可能类似于以下内容:
name;school;comment
Jean François;ENS;"Lorem ipsum dolor sit amet; consectetur,
adipiscing elit, sed do eiusmod tempor"
Run Code Online (Sandbox Code Playgroud)
感谢“如何将 2D 数组从控制台复制到 CSV/Excel 文件并正确处理换行符和分隔符”我意识到有一个技巧可以通过首先复制到带有转义引号的 Sublime Text 文件然后在 Excel 中打开来处理换行符.
将此类数据直接复制到电子表格中仍然很困难,因为换行符仍被视为新行。
此代码是从远程服务器生成的,而我需要将数据加载到本地电子表格中。由于多种原因,通过 FTP 或 SMTP 交换文件不方便。这只是很少发生的事情,因此不值得向代码库添加代码来处理此类导出,因此我主要依靠控制台补丁来轻松导出一些数据。
对于常规导出,我们在其他应用程序中有一些代码。
如何生成可以轻松粘贴到电子表格中的控制台输出?
使用红宝石CSV:
array2D = [
["name", "school", "comment"],
["Jean François", "ENS", "Lorem ipsum dolor sit amet, consectetur,\nadipiscing elit, sed do eiusmod tempor"]
]
csv = CSV.generate(col_sep: ';') do |csv|
array2D.each do |row|
csv << row
end
end
puts csv
Run Code Online (Sandbox Code Playgroud)
代码变化很小,CSV 为您完成所有繁重的工作(包括正确的转义和引用)。但是,粘贴这可能会给您在 Excel 中出现错误 - 详细信息可能取决于您当前的代码页、Excel 的区域设置等。将其保存到文件(开头带有 BOM File.write('foo.csv', "\ufeff" + csv, encoding: 'utf-8'):)并从 Excel 导入它应该是更好的。
| 归档时间: |
|
| 查看次数: |
192 次 |
| 最近记录: |