Javascript 中的简单 CSV 解析
Simple CSV parsing in Javascript
这是我的问题:
我正在尝试解析 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 cannot load - Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension , https, chrome-extension-resource 错误,因为我的文件存储在本地。
是否有解析 JavaScript 中的 CSV 文件以访问数据的简单解决方案?我在论坛上查找了数百个帖子,但无法正常工作。
非常感谢(打扰一下,我对 JS 很陌生)
汤姆.
这个答案是规范的,因为它解决了问题可能描述的任何人的问题。这些答案中只有第一个是针对 OP 的,尽管关于最后一条评论,我在底部添加的编辑部分也是专门针对 OP 的。
如果您正在为小型本地应用程序执行此操作,您可能可以执行以下两项操作之一:
- 在禁用 CORS 的情况下启动浏览器:
Chrome.exe --disable-web-security
在源代码中也有针对 firefox 的说明
- 运行 用于您的文件的微型服务器:
如果您安装了 Python(大多数 Mac 和 Linux 用户安装),您可以启动一个快速的本地 Web 服务器进行测试。使用命令提示符,导航到包含 HTML 文件和 运行 以下命令的目录:
python -m SimpleHTTPServer
您的文件现在应该可以从 http://localhost:8000/ 访问,并且在 file:/// 不可用时很有可能工作。
如果您 运行 遇到 python 服务器的 CORS 问题,更好的解决方案可能是 local-web-server
来自 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...
})
编辑:为一个简单的应用程序设置它:
使服务器成为 rc.d 或任何地方的服务。按照这样的指南进行操作:https://blog.terminal.com/using-daemon-to-daemonize-your-programs/
不要使服务器成为活动的本地服务!相反,制作一个脚本来启动您的应用程序,并且仅从该脚本启动守护程序。在服务的初始化脚本中,每隔几分钟检查一次以查找应用程序的 PID 或其他内容,并在应用程序不再 运行ning 时自动关闭。
这是我的问题:
我正在尝试解析 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 cannot load - Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension , https, chrome-extension-resource 错误,因为我的文件存储在本地。
是否有解析 JavaScript 中的 CSV 文件以访问数据的简单解决方案?我在论坛上查找了数百个帖子,但无法正常工作。
非常感谢(打扰一下,我对 JS 很陌生)
汤姆.
这个答案是规范的,因为它解决了问题可能描述的任何人的问题。这些答案中只有第一个是针对 OP 的,尽管关于最后一条评论,我在底部添加的编辑部分也是专门针对 OP 的。
如果您正在为小型本地应用程序执行此操作,您可能可以执行以下两项操作之一:
- 在禁用 CORS 的情况下启动浏览器:
Chrome.exe --disable-web-security
在源代码中也有针对 firefox 的说明
- 运行 用于您的文件的微型服务器:
如果您安装了 Python(大多数 Mac 和 Linux 用户安装),您可以启动一个快速的本地 Web 服务器进行测试。使用命令提示符,导航到包含 HTML 文件和 运行 以下命令的目录:
python -m SimpleHTTPServer
您的文件现在应该可以从 http://localhost:8000/ 访问,并且在 file:/// 不可用时很有可能工作。
如果您 运行 遇到 python 服务器的 CORS 问题,更好的解决方案可能是 local-web-server
来自 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...
})
编辑:为一个简单的应用程序设置它:
使服务器成为 rc.d 或任何地方的服务。按照这样的指南进行操作:https://blog.terminal.com/using-daemon-to-daemonize-your-programs/
不要使服务器成为活动的本地服务!相反,制作一个脚本来启动您的应用程序,并且仅从该脚本启动守护程序。在服务的初始化脚本中,每隔几分钟检查一次以查找应用程序的 PID 或其他内容,并在应用程序不再 运行ning 时自动关闭。