【问题标题】:Simple CSV parsing in JavascriptJavascript 中的简单 CSV 解析
【发布时间】:2017-04-05 12:38:12
【问题描述】:

这是我的问题:

我正在尝试用 JavaScript 解析本地 CSV 文件。该文件如下所示:

Year,Promo,Surname,Name,Mail
2005/2006,0,XXXX,XXXXX,xxxxx.xxxxx@gmail.com
(...)
2006/2007,1,XXXX,XXXXX,xxxxx.xxxxx@gmail.com
(...)
2007/2008,2,XXXX,XXXXX,xxxxx.xxxxx@gmail.com
etc.

我尝试使用多个库(PapaParse.js、jquery-csv、d3.js...)对其进行解析,但是:

  • 要么解析失败(我的数组为空)

  • 或者我得到一个 XMLHttpRequest 无法加载 - 跨源请求仅支持协议方案:http、data、chrome、chrome-extension、https、chrome-extension-resource 错误,因为我的文件存储在本地。

是否有一个简单的解决方案可以在 JavaScript 中解析 CSV 文件以访问数据?我在论坛上查找了数百个帖子,但无法正常工作。

非常感谢(对不起,我是JS的新手)。

汤姆。

【问题讨论】:

  • 我认为您同时遇到的问题不止一个。你从哪里得到你的文件?也许您应该开始使用本地文件,然后再进一步。
  • 你在使用服务器吗?
  • @Marcel 这是一个本地文件,OP 说 “我正在尝试解析本地 CSV 文件”
  • @GerardoFurtado 不,我不是,至少目前不是

标签: javascript csv parsing d3.js papaparse


【解决方案1】:

这个答案是规范的,因为它解决了问题可能描述的任何人的问题。这些答案中只有第一个是针对 OP 的,尽管关于最后一条评论,我在底部添加的编辑部分也是专门针对 OP 的。

如果您是为小型本地应用程序执行此操作,您可能可以执行以下两件事之一:

  1. 在禁用 CORS 的情况下启动浏览器:

Chrome.exe --disable-web-security

源码中也有firefox的说明

src

  1. 为您的文件运行微型服务器:

如果您已经安装了 Python(大多数 Mac 和 Linux 用户都安装了),您可以启动一个快速的本地 Web 服务器进行测试。使用命令提示符,导航到包含 HTML 文件的目录并运行以下命令:

python -m SimpleHTTPServer

您的文件现在应该可以从 http://localhost:8000/ 访问,并且在 file:/// 不可用时可能很有可能工作。

src

如果您在 python 服务器上遇到 CORS 问题,更好的解决方案可能是 local-web-server from node: https://www.npmjs.com/package/local-web-server

寻找此问题答案的典型用户可能正在使用节点:

'use strict';

var fs = require('fs');

var readFilePromise = function(file) {
  return new Promise(function(ok, notOk) {
    fs.readFile(file, function(err, data) {
        if (err) {
          notOk(err)
        } else {
          ok(data)
        }
    })
  })
}

readFilePromise('/etc/passwd').then(function(data) {
  // do something with the data...
})

src

编辑:为一个简单的应用程序设置它:

使服务器成为 rc.d 或任何地方的服务。遵循这样的指南:https://blog.terminal.com/using-daemon-to-daemonize-your-programs/

不要让服务器成为活动的本地服务!相反,制作一个脚本来启动您的应用程序,并且仅从该脚本启动守护程序。在服务的初始化脚本中,每隔几分钟编写一个检查以查找应用的 PID 或其他内容,并在应用不再运行时自动关闭。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 2016-09-16
    • 2011-03-05
    • 2011-10-25
    • 2010-10-07
    • 1970-01-01
    相关资源
    最近更新 更多