2013-09-27 65 views
5

如何從Javascript/NodeJS中的字符串中檢測CSV分隔符?使用Javascript中的CSV分隔符自動檢測

哪個是標準算法?

請注意,分隔符總是不是逗號。最常見的分隔符是;,,\t(標籤)。

+1

下面是Python如何執行此操作:http://svn.python.org/view/python/trunk/Lib/csv.py?view=markup#l162 – Blender

+0

您使用什麼模塊來解析CSV? – Alex

+0

@Blender這將是很好的端口它的JavaScript。我不是一個Python專家......我沒有看到類似的問題。 –

回答

12

一種可能的算法求可能分離器(一個或多個)是相當簡單的,假定數據是合式:

  1. 對於每一個分隔符,
    1. 對於每一行,
      1. 按分隔符分行,檢查length
      2. 如果它的length而不是等於最後一行的長度,則這不是有效的分隔符。

概念證明(不處理引號的字段):

function guessDelimiters (text, possibleDelimiters) { 
    return possibleDelimiters.filter(weedOut); 

    function weedOut (delimiter) { 
     var cache = -1; 
     return text.split('\n').every(checkLength); 

     function checkLength (line) { 
      if (!line) { 
       return true; 
      } 

      var length = line.split(delimiter).length; 
      if (cache < 0) { 
       cache = length; 
      } 
      return cache === length && length > 1; 
     } 
    } 
} 

length > 1檢查,以確保split不只是返回整條生產線。請注意,這會返回一個可能的分隔符數組 - 如果有多個項目,則會產生歧義問題。

相關問題