2012-10-04 4 views
1

J'ai le code Node.js suivant:Node.js analyser le fichier csv avec paresseux

new lazy(fs.createReadStream('file.csv')) 
    .lines 
    .forEach(function(line){ 
    console.log(line.toString()); 
    }); 

Cependant, je ne reçois que la dernière ligne de données de cette façon. Le contenu du fichier csv sont les suivantes:

123, Cassé
12345, volé
1.234.567, perdus

Qu'est-ce que je fais mal ici?

J'ai aussi ce code pour le même fichier:

fs.readFile(req.files.file.path, 'utf8', function (err, data) { 
    if (err) throw err; 
    var lines = data.split(/\r?\n/); 
    console.log(lines); 
}); 

qui retourne le tableau suivant:

[ '123,broken\r12345,stolen\r1234567,lost' ] 
+0

Donc votre fichier est cassé, il devrait être '\ r \ n' pas juste' \ r'; ce qui est évident pour votre propre test. – Chad

+0

veuillez élaborer – user1175817

+0

La bibliothèque (et votre 'data.split()') recherchent soit '\ r \ n' (retour chariot, retour à la ligne) ou' \ n' (nouvelle ligne). Cependant, votre fichier csv utilise '\ r' comme séparateur de ligne. Ceci est une erreur; faites tout ce qui est en train d'écrire votre fichier csv d'utiliser '\ r \ n' ou' \ n'. – Chad

Répondre

2

\r\n, \n et \r sont toutes les fins de ligne valides, vous devez soyez prêt à les diviser tous.

Convertissez-les tous en une valeur commune avant de procéder à la division. Quelque chose comme:

var lines = data.replace(/\r\n?/g, "\n").split("\n"); 
Questions connexes