将casper javascript数据插入CSV文件

将casper javascript数据插入CSV文件,javascript,phantomjs,casperjs,Javascript,Phantomjs,Casperjs,我想将数据从casper JS传递到我当前使用的CSV文件 fs = require('fs'); fs.write('test.csv', "name, title", "a"); fs.write('test.csv', name.trim()+","+title.trim(), "a"); 这是在一个循环中,因此有许多记录 但打印到CSV文件并不是插入到新行。它现在是这样写的,我只想在这上面写两列 Name Title name1 name1 name2 title2

我想将数据从casper JS传递到我当前使用的CSV文件

fs = require('fs');
fs.write('test.csv', "name, title", "a");
fs.write('test.csv', name.trim()+","+title.trim(), "a");
这是在一个循环中,因此有许多记录

但打印到CSV文件并不是插入到新行。它现在是这样写的,我只想在这上面写两列

Name    Title
name1   name1    name2   title2    name3   title3

在每次写入后添加换行符

fs.write('test.csv', "name, title\n", "a");
编辑

请注意,尽管这解决了新行问题,但CSV不仅仅是在条目之间添加逗号。如果任何数据包含逗号,则需要对其进行转义

有几个库值得注意,比如-但是如果您完全了解数据的行为,您可以继续使用您的解决方案。

添加换行符

fs.write('test.csv', name.trim()+","+title.trim()+"\n", "a");
CSV各不相同,但通常都有四个特殊字符

逗号分隔符 转义字符通常\,用于转义数据中使用的其他特殊字符 行分隔符\n通常是换行符, 包装,通常是围绕每个值的引号 所以,如果你真的想要一个合适的CSV,你可以这样做

function escapeCSVData(text){
    text = text.
        replace("\", "\\,"). // escape any escape chars
        replace(",", "\,"); // escape commas
    return '"'+text+'"'; // add quotes
}

fs.write('test.csv', escapeCSVData(name.trim())+","+escapeCSVData(title.trim())+"\n", "a");
我没有测试上面的内容,但这应该对你有用

编辑

我刚刚了解到逗号是简单引用的,不是转义的,所以函数实际上是这样的

function escapeCSVData(text){
    return '"'+text+'"'; // add quotes
}

你的解决方案比我的快速打字更简洁。我要补充的是,CSV不是简单的逗号分隔的-您需要转义可能包含分隔符的数据-仅仅添加+,+是不够的,假设存在一些歧义,您是对的,但是给定的示例数据不需要转义任何内容。但是如何转义字符串上的逗号?我现在有问题了,你能发布一个导致问题的数据片段吗?这样我就可以告诉你最好的方法了?考虑到字符串Illinois,Chicago,有一个逗号,它在CSV中被视为两列