2017-01-02 8 views
3

こんにちは、カプセル化文字が正しくエスケープされないCSVファイルがあります。コンテンツのカプセル化が正しくエスケープされないCSVファイルの解析

[email protected],"uhrege gerjhhg er<span style="background-color: rgb(0,153,0);">eriueiru kernger</span><font color="#009900"><span style="background-color: rgb(255,255,255);"> weiufhuweifbw fhew fibwefbw</span></font><div><font color="#009900"><span style="background-color: rgb(255,255,255);">wekifbwe fewf</span></font></div><div><font color="#009900"><span style="background-color: rgb(255,255,255);">weiuifgewbfjew f</span></font></div>",18-Oct-2016, 

デリミタ - >、

カプセル化機能は - 私は、 は 'invalid char between encapsulated token and delimiter' 例外をスローコモンズ-CSVリーダーを使用して読み取るしようとすると、>「

それは壊れる

ただし、Microsoft Excelファイルを完全に開くようです。 proccエド? 。

カプセル化装置が正しくエスケープされていないCSVファイルはどのように解析されますか?.Excelはそのようなファイルをうまく開くようです。あなたは(つまり整形CSVを生成する)ソースでこの問題を解決することはできません、あなたはこれを自分で解析したい場合は、簡単な方法を行くことができる

+1

私はこの便利なhttp://stackoverflow.com/questions/15210568/java-csv-parser-with-unescaped-quotesを見つけました。教育的な推測をする。同じようにするにはどうすればいいですか? –

答えて

1

スキャン,"までのフィールド1 - フィールド2最大", - 残りはフィールド3(末尾にカンマ?)です。

もちろん、",がhtmlフィールドにある場合は問題があります。最初に,"までスキャンしてから、最後に(画面の最後から)",までスキャンして解決できます。

あなたがここに表示さよりも多くのフィールドがある場合は、"と組み合わせる,を探して(両方の組み合わせは、また","ことができる)と、それらがフィールドデータには表示されないことを望むことができます。

0

univocity-parsersには、この種の入力を適切に処理できるCSVパーサーがあります。

//first configure the parser 
    CsvParserSettings settings = new CsvParserSettings(); 
    settings.setUnescapedQuoteHandling(UnescapedQuoteHandling.STOP_AT_CLOSING_QUOTE); 

    //then create a parser and parse your input line: 
    CsvParser parser = new CsvParser(settings); 
    String[] result = parser.parseLine("" + 
      "[email protected],\"uhrege gerjhhg er<span style=\"background-color: rgb(0,153,0);\">eriueiru kernger</span><font color=\"#009900\"><span style=\"background-color: rgb(255,255,255);\"> weiufhuweifbw fhew fibwefbw</span></font><div><font color=\"#009900\"><span style=\"background-color: rgb(255,255,255);\">wekifbwe fewf</span></font></div><div><font color=\"#009900\"><span style=\"background-color: rgb(255,255,255);\">weiuifgewbfjew f</span></font></div>\",18-Oct-2016,"); 

    //here's the result (one value per line) 
    for (String v : result) { 
     System.out.println(v); 
    } 

この版画:

[email protected] 
uhrege gerjhhg er<span style="background-color: rgb(0,153,0);">eriueiru kernger</span><font color="#009900"><span style="background-color: rgb(255,255,255);"> weiufhuweifbw fhew fibwefbw</span></font><div><font color="#009900"><span style="background-color: rgb(255,255,255);">wekifbwe fewf</span></font></div><div><font color="#009900"><span style="background-color: rgb(255,255,255);">weiuifgewbfjew f</span></font></div> 
18-Oct-2016 
null 

はそれがお役に立てば幸いです。

免責事項:私はこのライブラリの作者です。オープンソースで無料(Apache v2.0ライセンス)

関連する問題