将casper javascript数据插入CSV文件
我想将数据从casper JS传递到我当前使用的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
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中被视为两列