Ich versuche, eine CSV-Datei mit OpenCSV zu analysieren. Eine der Spalten speichert die Daten im serialisierten YAML-Format und wird in Anführungszeichen gesetzt, da sie ein Komma enthalten kann. Es enthält auch Anführungszeichen, so dass es durch das Setzen von zwei Anführungszeichen gematcht wird. Ich bin in der Lage, diese Datei in Ruby leicht zu analysieren, aber mit OpenCSV kann ich es nicht vollständig analysieren. Es ist eine UTF-8-kodierte Datei.Parse CSV mit OpenCSV mit doppelten Anführungszeichen in einem Feld in Anführungszeichen
Hier ist mein Java-Schnipsel, die die Datei von dieser Datei
CSVReader reader = new CSVReader(new InputStreamReader(new FileInputStream(csvFilePath), "UTF-8"), ',', '\"', '\\');
Hier sind 2 Zeilen zu lesen versucht. Die erste Zeile wird nicht richtig geparst und wird bei ""[Fair Trade Certified]""
aufgrund von doppelten Anführungszeichen geteilt.
1061658767,update,1196916,Product,28613099,Product::Source,"---
product_attributes:
-
- :name: Ornaments
:brand_id: 49120
:size: each
:alcoholic: false
:details: ""[Fair Trade Certified]""
:gluten_free: false
:kosher: false
:low_fat: false
:organic: false
:sugar_free: false
:fat_free: false
:vegan: false
:vegetarian: false
",,2015-11-01 00:06:19.796944,,,,,,
1061658768,create,,,28613100,Product::Source,"---
product_id:
retailer_id:
store_id:
source_id: 333790
locale: en_us
source_type: Product::PrehistoricProductDatum
priority: 1
is_definition:
product_attributes:
",,2015-11-01 00:06:19.927948,,,,,,
Die "Standard" für CSV-Dateien RFC4180 ist, aber nicht immer folgt. Dazu gehören das Angeben von Feldern mit Kommas und das Umwandeln von inneren Anführungszeichen in zwei Anführungszeichen. Googling "RFC4180 Java Parser" bietet einige Möglichkeiten. – Paul
Mit * OpenCSV * können Sie es nicht analysieren. Kredit, wo Kredit fällig ist. – EJP
@EJP weiß nicht, was Sie damit implizieren :) Aber sowieso, mit einem Parser kompatibel RFC4180 repariert es. – invinc4u