在我的节点应用中,我正在尝试清理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');
});
答案 0 :(得分:1)
我在这里看不到任何明显的错误(可能是你的正则表达式的东西?不是那些专家),但这将解决你的问题。
if (line.charAt(0) == ',') { line = line.substring(1); }
相应地调整变量。我不认为我和你有同样的情况。
编辑:这是一个有效的JSBin。