将表导出为CSV,逗号不是换行符

时间:2011-11-28 21:11:02

标签: wolfram-mathematica

我有一个函数f[a]。我通过Table运行它来生成一个巨大的值列表,以便以后在C程序中用作查找表。我想将其导出为CSV,这样我就可以将其复制/粘贴到我的代码编辑器中并快速将其转换为C数组(我只需要将它包装成花括号并给它命名):

Export["myfile.csv", Table[ f[a], {a, 0, 6} ], "CSV" ];

我想要的是:

0, 1, 2, 3, 4, 5, 6

等等,但我最终得到了这个:

0
1
2
3
4
5
6

每个条目都在新行上。我错过了什么简单明了的事情?

谢谢!

4 个答案:

答案 0 :(得分:12)

您可以使用更通用的"Table" format导出并指定行分隔符。例如:

Export["myfile.csv", Table[f[a], {a, 0, 6}], "Table", "LineSeparators" -> ", "]

FilePrint["myfile.csv"]
(* Returns: 
f[0], f[1], f[2], f[3], f[4], f[5], f[6]
*)

您可能还需要指定"FieldSeparators"选项,"Table"格式的默认值为"\t"

答案 1 :(得分:6)

如果您的导出对象是单个列表,则可以避免修改其元素,并将其包装在List中:

Export["myfile.csv", List @ Table[f[a], {a, 0, 6}]]

答案 2 :(得分:4)

这应该做你想要的:

Export["myfile.csv", Transpose@Table[{f@a}, {a, 0, 6}], "CSV"]

您的方法将产生一个列向量,这会导致每一行被写在一个新行上。将表创建为行向量可以解决此问题。在这种情况下,每个列都用逗号分隔。


创建列表列表似乎是一种笨重的方式,但这就是Mathematica无论如何在内部对待它的方式。如果您从代码中导入CSV文件:

Import["myfile.csv"]
Out[1]={{0}, {1}, {2}, {3}, {4}, {5}, {6}}

你看到Mathematica已经自动将每个元素填充到一个列表中。所以它必须以这种方式填入列表中,或者像Mr.Wizard's answer一样填充。

答案 3 :(得分:3)

如何使用Partition

f[x_] = Sin[x/10.];

Export["C:\\Users\\Sjoerd\\Desktop\\myfile.csv",
       Partition[Table[f[a], {a, 0, 600}], 30], 
       "CSV"
];

enter image description here