簡體   English   中英

csv-parse 拋出無效的開頭引號:在行的字段內找到引號

[英]csv-parse is throwing Invalid Opening Quote: a quote is found inside a field at line

我知道那里還有其他帖子,但似乎沒有一個能解決我的問題。 我將 csv-parse 與 node.js 一起使用。這是 CSV header 並記錄我正在嘗試解析的內容。

sku,description,productUnitOfMeasure,unitCost,retailPrice,wholesalePrice,dropShipPrice,assemblyCost,planner,comments,productId,fileUpdate,SkuStatus,Master Planning Family,Category,Sub-Category,Brand,ShortCode,Import/Domestic,Inventory Value,Master Pack Quantity,Pallet / TI / HI,40HC Quantity,Product Group ID
032406021945-GreenBay,TFAL B2080264 INIT TNS GRY SAUTE PN 8",EA,7.72,13.99,0.00,0.00,0,Whitney Ehlke-2307,,032406021945,2022-01-25,New,COOKWARE,OPENSTOCK,NONE,T-FAL,B2080264,Domestic,208.44,3,0/0/0,0,23

我無法控制這個文件。 我只需要能夠解析它。 你會看到在描述的末尾有一個雙引號: TFal B2080264 INI TNS GRY SAUTE PN 8"

我需要雙引號留在那里並將其解析為一個字段。 我不斷收到此錯誤:

無效的開頭報價:在第 2 行的字段中找到了報價。

報價不是開場白。 從技術上講,這是一個結束。 但無論如何,它不會解析。

這是目前我的代碼:

const parser = fs.createReadStream(filePath).pipe(
    parse({ columns: true, relax_quotes: true, escape: '\\', ltrim: true, rtrim: true })
)

我已經刪除了一些參數並嘗試了其他參數,但無濟於事。 有任何想法嗎??

此代碼適用於最新的 csv-parse 版本 (5.0.4)。 您使用的是哪個版本的 csv-parse package? 我問是因為看起來該選項最近才從relax重命名為relax_quotes

代碼:

const csv = require('csv-parse');
const fs = require('fs');

const parser = fs.createReadStream("70880341.csv").pipe(
  csv.parse({ columns: true, relax_quotes: true, escape: '\\', ltrim: true, rtrim: true })
)

const records = [];

parser.on('readable', function() {
  let record;
  while ((record = parser.read()) !== null) {
    records.push(record);
  }
});

parser.on('error', function(err) {
  console.error(err.message);
});

parser.on('end', function() {
  console.log(records);
});

結果:

[{
    sku: '032406021945-GreenBay',
    description: 'TFAL B2080264 INIT TNS GRY SAUTE PN 8"',
    productUnitOfMeasure: 'EA',
    ...
}]

對我來說,完整的錯誤消息是: CsvError: Invalid Opening Quote: a quote is found on field 0 at line 1, value is "" (utf8 bom)

並為 csv.parse 添加“bom:true”參數 - 有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM