我想将数据从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
答案 0 :(得分:5)
添加换行符
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
}
答案 1 :(得分:2)
每次写入后添加换行符
fs.write('test.csv', "name, title\n", "a");
修改强>
请注意,虽然这可以解决您的新行(行)问题,但CSV不仅仅是在条目之间添加逗号。如果您的任何数据包含逗号,则需要将其转义。
https://en.wikipedia.org/wiki/Comma-separated_values
有一些要注意的库,例如https://github.com/wdavidw/node-csv#readme - 但如果您完全了解数据的行为方式,则可以继续使用您的解决方案。