2016-03-10 2 views
0

Я хочу передать данные из Каспера JS в CSV файл я в настоящее время с помощьюВставка Casper Javascript данные в CSV файл

fs = require('fs'); 
fs.write('test.csv', "name, title", "a"); 
fs.write('test.csv', name.trim()+","+title.trim(), "a"); 

это находится внутри петли таким образом, есть много записей

но печатая на CSV-файл не вставляется в новую строку. В настоящее время он пишет, как это, и я хочу только 2 колонки на этом

Name Title 
name1 name1 name2 title2 name3 title3 

ответ

4

добавить переносы строк

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"); 

Я не тестировал вышеуказанное, но это должно сработать для вас.

EDIT

Я только что узнал, что запятые просто цитирует, не удалось избежать, так что функция будет Actaully просто посмотреть, как это ..

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

Ваше решение чище, чем мой быстрый печатать на машинке. Я просто добавлю, что CSV не просто разделены запятыми - вам нужно избегать данных, которые могут содержать разделители - недостаточно просто добавить «+», «+» – noderman

+0

, предполагая, что существует некоторая двусмысленность, re right, но предоставленные данные образца не требуют ничего, чтобы сбежать. –

+0

Как я могу избежать запятой на строке? У меня проблемы с этим сейчас – Andrei

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 - но если вы знаете абсолютно, как ваши данные будут вести себя, вы можете пойти с вашим решением.

Смежные вопросы