1 回答
TA贡献1777条经验 获得超3个赞
您可以做的是将该文件拆分为行,然后加入具有奇数个 " 字符的行。
我的脚本还处理 \n 字符在单行数据中多次出现的情况。
这是基于这样一个事实,即只有多行行的第一行和最后一行会有奇数个 " 字符。
您可以使用我的脚本重新格式化您的文件,然后将其输入您的 csv 解析器。
const example1 = `"United States of
America",140640,17987,2398,286,Local transmission,0`;
console.log(reformatCsv(example1));
const example2 = `"United States of
America",140640,17987,2398,286,"Local
transmission",0`;
console.log(reformatCsv(example2));
// @param file: string
function reformatCsv(file)
{
const lines = file.split('\n');
let reformattedRows = [];
const parts = [];
for (const line of lines)
{
const quoteMatches = line.match(/"/g);
const isEvenNumberOfQuotes = !quoteMatches || quoteMatches.length % 2 == 0;
const noPartialRowsYet = !parts.length;
if (noPartialRowsYet)
{
if (isEvenNumberOfQuotes) // normal row
{
reformattedRows.push(line);
}
else // this is a partial row
{
parts.push(line);
}
}
else // continuation of a partial row
{
parts.push(line);
if (!isEvenNumberOfQuotes) // we got all of the parts
{
// join the parts
// I replace \n with a space character, but you don't have to
reformattedRows.push(parts.join(' '));
}
}
}
return reformattedRows.join('\n');
添加回答
举报