为了账号安全,请及时绑定邮箱和手机立即绑定

解析CSV数据的JavaScript代码

解析CSV数据的JavaScript代码

catspeake 2019-06-05 16:16:21
解析CSV数据的JavaScript代码有人知道我在哪里可以找到一些javascript代码来解析CSV数据吗?
查看完整描述

3 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

它是一个jQuery插件,用于将CSV解析为Javascript数据的端到端解决方案。它处理在RFC 4180,还有一些弹出的Excel/GoogleSpreadsheed导出(即主要涉及空值),而规范缺少这些导出。

例子:

曲目,艺术家,专辑,年份

“危险”,“Busta节奏”,“灾难降临时”,1997年

// calling thismusic = $.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:

它现在也适用于Node.js上的jQuery。因此,您可以选择使用相同的lib进行客户端或服务器端解析。

查看完整回答
反对 回复 2019-06-05
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

我有一个实施作为电子表格项目的一部分。

这段代码还没有经过彻底的测试,但是欢迎任何人使用它。

但是,正如一些答案所指出的那样,如果您实际拥有的话,您的实现可能要简单得多。DSV或TSV文件,因为它们不允许在值中使用记录和字段分隔符。另一方面,csv实际上可以在字段中有逗号和换行符,这破坏了大多数正则表达式和基于拆分的方法。

var CSV = {parse: function(csv, reviver) {
    reviver = reviver || function(r, c, v) { return v; };
    var chars = csv.split(''), c = 0, cc = chars.length, start, end, table = [], row;
    while (c < cc) {
        table.push(row = []);
        while (c < cc && '\r' !== chars[c] && '\n' !== chars[c]) {
            start = end = c;
            if ('"' === chars[c]){
                start = end = ++c;
                while (c < cc) {
                    if ('"' === chars[c]) {
                        if ('"' !== chars[c+1]) { break; }
                        else { chars[++c] = ''; } // unescape ""
                    }
                    end = ++c;
                }
                if ('"' === chars[c]) { ++c; }
                while (c < cc && '\r' !== chars[c] && '\n' !== chars[c] && ',' !== chars[c]) { ++c; }
            } else {
                while (c < cc && '\r' !== chars[c] && '\n' !== chars[c] && ',' !== chars[c]) { end = ++c; }
            }
            row.push(reviver(table.length-1, row.length, chars.slice(start, end).join('')));
            if (',' === chars[c]) { ++c; }
        }
        if ('\r' === chars[c]) { ++c; }
        if ('\n' === chars[c]) { ++c; }
    }
    return table;},stringify: function(table, replacer) {
    replacer = replacer || function(r, c, v) { return v; };
    var csv = '', c, cc, r, rr = table.length, cell;
    for (r = 0; r < rr; ++r) {
        if (r) { csv += '\r\n'; }
        for (c = 0, cc = table[r].length; c < cc; ++c) {
            if (c) { csv += ','; }
            cell = replacer(r, c, table[r][c]);
            if (/[,\r\n"]/.test(cell)) { cell = '"' + cell.replace(/"/g, '""') + '"'; }
            csv += (cell || 0 === cell) ? cell : '';
        }
    }
    return csv;}};


查看完整回答
反对 回复 2019-06-05
  • 3 回答
  • 0 关注
  • 1378 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信