[javascript] सीएसवी डेटा पार्स करने के लिए जावास्क्रिप्ट कोड



Answers

मुझे लगता है कि मैं पर्याप्त रूप से कीर्तन के जवाब को हरा सकता हूं

jQuery-CSV दर्ज jQuery-CSV

यह एक jquery प्लगइन है जो जावास्क्रिप्ट डेटा में सीएसवी को पार्स करने के लिए एंड-टू-एंड समाधान के रूप में काम करने के लिए डिज़ाइन किया गया है। यह आरएफसी 4180 में प्रस्तुत किए गए प्रत्येक एकल किनारे के साथ-साथ कुछ जो एक्सेल / Google स्प्रेडशीड निर्यात (यानी अधिकतर शून्य मानों को शामिल करते हैं) के लिए पॉप अप करते हैं, जो कि स्पेक गायब है।

उदाहरण:

ट्रैक, कलाकार, एल्बम, साल

खतरनाक, 'बुस्टा राइम्स', 'जब आपदा स्ट्राइक्स', 1 99 7

// calling this
music = $.csv.toArrays(csv)

// outputs...
[
  ["track","artist","album","year"],
  ["Dangerous","Busta Rhymes","When Disaster Strikes","1997"]
]

console.log(music[1][2]) // outputs: 'When Disaster Strikes'

अद्यतन करें:

ओह हाँ, मुझे शायद यह भी उल्लेख करना चाहिए कि यह पूरी तरह विन्यास योग्य है।

music = $.csv.toArrays(csv, {
  delimiter:"'", // sets a custom value delimiter character
  separator:';', // sets a custom field separator character
});

अद्यतन 2:

यह अब jQuery के साथ Node.js पर भी काम करता है। तो आपके पास एक ही lib के साथ क्लाइंट-साइड या सर्वर-साइड पार्सिंग करने का विकल्प है।

अद्यतन 3:

चूंकि Google Code shutdown, jquery-csv को गिटहब में माइग्रेट कर दिया गया है

अस्वीकरण: मैं jQuery-CSV का लेखक भी हूं।

Question

क्या किसी को कोई विचार है कि मुझे CSV डेटा को पार्स करने के लिए कुछ जावास्क्रिप्ट कोड कहां मिल सकता है?




यहां एक बेहद सरल सीएसवी पार्सर है जो उद्धृत फ़ील्ड को अल्पविराम, नई लाइनों, और डबल कोटेशन अंक से बचता है। कोई विभाजन या RegEx नहीं है। यह एक समय में इनपुट स्ट्रिंग 1-2 वर्ण स्कैन करता है और एक सरणी बनाता है।

इसे http://jsfiddle.net/vHKYH/ पर परीक्षण करें।

function parseCSV(str) {
    var arr = [];
    var quote = false;  // true means we're inside a quoted field

    // iterate over each character, keep track of current row and column (of the returned array)
    for (var row = col = c = 0; c < str.length; c++) {
        var cc = str[c], nc = str[c+1];        // current character, next character
        arr[row] = arr[row] || [];             // create a new row if necessary
        arr[row][col] = arr[row][col] || '';   // create a new column (start with empty string) if necessary

        // If the current character is a quotation mark, and we're inside a
        // quoted field, and the next character is also a quotation mark,
        // add a quotation mark to the current column and skip the next character
        if (cc == '"' && quote && nc == '"') { arr[row][col] += cc; ++c; continue; }  

        // If it's just one quotation mark, begin/end quoted field
        if (cc == '"') { quote = !quote; continue; }

        // If it's a comma and we're not in a quoted field, move on to the next column
        if (cc == ',' && !quote) { ++col; continue; }

        // If it's a newline (CRLF) and we're not in a quoted field, skip the next character
        // and move on to the next row and move to column 0 of that new row
        if (cc == '\r' && nc == '\n' && !quote) { ++row; col = 0; ++c; continue; }

        // If it's a newline (LF or CR) and we're not in a quoted field,
        // move on to the next row and move to column 0 of that new row
        if (cc == '\n' && !quote) { ++row; col = 0; continue; }
        if (cc == '\r' && !quote) { ++row; col = 0; continue; }

        // Otherwise, append the current character to the current column
        arr[row][col] += cc;
    }
    return arr;
}






csvToArray v1.3

एक कॉम्पैक्ट (645 बाइट्स) लेकिन एक सीएसवी स्ट्रिंग को 2 डी सरणी में बदलने के लिए अनुपालन समारोह, आरएफसी 4180 मानक के अनुरूप है।

https://code.google.com/archive/p/csv-to-array/downloads

सामान्य उपयोग: jQuery

 $.ajax({
        url: "test.csv",
        dataType: 'text',
        cache: false
 }).done(function(csvAsString){
        csvAsArray=csvAsString.csvToArray();
 });

सामान्य उपयोग: जावास्क्रिप्ट

csvAsArray = csvAsString.csvToArray();

फील्ड विभाजक ओवरराइड करें

csvAsArray = csvAsString.csvToArray("|");

रिकॉर्ड विभाजक ओवरराइड करें

csvAsArray = csvAsString.csvToArray("", "#");

छोड़ें हेडर ओवरराइड करें

csvAsArray = csvAsString.csvToArray("", "", 1);

सभी ओवरराइड करें

csvAsArray = csvAsString.csvToArray("|", "#", 1);



Related