在我的 Node 应用程序中,我正在尝试清理 csv 文件。 首先,我将其分成单独的行 然后我替换第一行中不需要的字符(列标题) 然后我通过将各个行插入新数组并将该数组写入新的 .csv 文件来重新组装文件 由于某种原因,我的所有行最终都相对于标题行移动了 1 个位置。 我已经在 vu 编辑器中打开了生成的文件,并且可以看到,所有行都以某种方式在围攻处获得了“,”字符
我知道我做错了什么,但看不到那是什么。
这是我的代码:
var XLSX = require('xlsx');
var fs = require('fs');
var csv = require("fast-csv");
var workbook = XLSX.readFile('Lineitems.xls');
var worksheet = workbook.Sheets['Sheet1'];
var csv_conversion = XLSX.utils.sheet_to_csv(worksheet);
var csv_lines = csv_conversion.split('\n');
var dirtyHeaderLine = csv_lines[0];
var cleanHeaderLine = dirtyHeaderLine.replace(/\./g,"")
.replace(/"'"/g,"")
.replace(/","/g,"")
.replace(/"\/"/g,"")
.replace(/"#"/g,"");
cleanHeaderLine = cleanHeaderLine.replace(/,+$/, "");
console.log(cleanHeaderLine);
csv_lines[0] = cleanHeaderLine;
var newCsvLines = [];
csv_lines.forEach(function(line){
newCsvLines.push(line + "\n");
});
fs.writeFile('clean_file.csv', newCsvLines, function(err) {
if (err) throw err;
console.log('clean file saved');
});
最佳答案
我在这里没有看到任何明显的错误(也许你的正则表达式有什么问题?不是这方面的专家),但这会解决你的问题。
if (line.charAt(0) == ',') { line = line.substring(1); }
相应地调整您的变量。我想我没有和你一样的情况。
编辑:这是一个正在运行的 JSBin。
关于javascript - 如何正确组装 csv 文件以避免列移位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30677628/