如何将2D数组从控制台复制到CSV / Excel文件并正确处理换行符和分隔符

问题描述 投票:-1回答:2

[这里是一个主意:我有一个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;

这会在控制台上输出一个列表,我可以很容易地将其复制/粘贴到电子表格应用程序中,然后选择;作为输入定界符。

但是现在我必须处理包含应该转义的字符的字符串输入,例如逗号,分号或换行符。这完全破坏了我的数据复制/粘贴。

样本数据:

array2D = [
  ["name", "school", "comment"],
  ["Jean François", "ENS", "Lorem ipsum dolor sit amet; consectetur,\nadipiscing elit, sed do eiusmod tempor" 
]

我当前的方法给出了三行,因为它使用分号分隔符来分隔行:

name;school;comment
Jean François;ENS;Lorem ipsum dolor sit amet;consectetur,
adipiscing elit, sed do eiusmod tempor

目标可能类似于以下内容:

name;school;comment
Jean François;ENS;"Lorem ipsum dolor sit amet; consectetur,
adipiscing elit, sed do eiusmod tempor"

[感谢“ How to copy 2D array from console into a CSV/Excel file and properly handle newlines and separators”,我意识到有一种处理换行的技巧,首先将其复制到带有转义引号的Sublime Text文件中,然后在Excel中打开它。

由于将换行符仍视为新行,因此仍然很难将此类数据直接复制到电子表格中。

此代码是从远程服务器生成的,而我需要将数据加载到本地电子表格中。由于多种原因,通过FTP或SMTP交换文件不方便。这只是很少发生的事情,因此不值得在代码库中添加代码来处理此类导出,因此我主要依靠控制台补丁轻松导出某些数据。

对于常规出口,我们在其他应用程序中提供了一些代码。

如何生成可轻松粘贴到电子表格中的控制台输出?

[这里是个主意:我有一个2D数组,其中包含带有换行符\ n的非转义字符串,有时甚至还有像CSV分隔符之类的字符,如;。我需要能够轻松复制并粘贴此类...

ruby csv spreadsheet
2个回答
4
投票

使用Ruby CSV


1
投票

使用File.write('foo.csv', "\ufeff" + csv, encoding: 'utf-8')宝石:

© www.soinside.com 2019 - 2024. All rights reserved.