2017-11-27 6 views
2

を与えられた私は、私が唯一の1つのレコードを持って、自動的にUnivocityパーサ偽の区切り文字の自動検出少なすぎる情報が

CsvParserSettings settings = new CsvParserSettings(); 
settings.detectFormatAutomatically(); 

を区切り文字を検出するためのパーサを設定します。47W2E2qxPs, http://usda.gov/mattis.html

私が得たもの:

code: 47W2E2qxPshttp url: //usda.gov/mattis.html 

デリミタが,であると予想しましたが、:

だから私の期待される結果は47W2E2qxPshttp://usda.gov/mattis.htmlとなるでしょう。

エレガントな方法で修正できますか?

答えて

1

ここに図書館の著者があります。検出プロセスは、入力の一部の複数の行から収集された統計を使用するヒューリスティックです。したがって、入力のサイズに大きく依存します。

その目的は、ユーザーがランダムファイルをアップロードするときなど、CSV形式が何であるかを簡単に判断できない状況を処理することです。正しい区切り文字がわかっている場合は、検出プロセスを使用しないでください。

あなたのケースでは、特に複数のシンボルが存在する場合、デリミタを確実に検出するには1行のデータだけでは不十分です。あなたが続ける前に検出された区切り何であったかのテストを除いてそれについてできることはほとんどあり:

parser.beginParsing(new File("/path/to/your.csv")); 
CsvFormat format = parser.getDetectedFormat(); 
//check if the format is sane. 

次のバージョン(2.6.0)は、このような使用できる文字のセットを提供するようヒューリスティックを支援するために、より多くのオプションが含まれます区切り文字として使用することができます - おそらくあなたの場合に役立ちます。

関連する問題