Arnt区切りのコンマを含むカンマ区切りのCSVを解析するための最良の方法? [Java] [重複] -- java フィールド と parsing フィールド と csv フィールド 関連 問題

Best way to parse comma delimeted CSV that include commas that arnt delimeters? [Java] [duplicate]












0
vote

問題

日本語

データベースのデータベースにいくつかのデータセットを解析しようとしています。私が働いているCSVファイルには、データがコンマで区切られています。ただし、その文字列の一部であるカンマを含む引用符によって囲まれるデータがいくつかあります。この障害物を考慮した各データ項目を各データ行に進み、各データ項目を解析する方法は?

編集:このプログラムは非CSVファイルに使用されるため、CSVパーサーはオプションではありません。そして私は外部ライブラリを最小にしようとしています。

私はここでのコードのために問題を見つけました:

<事前> <コード> while(bufferinput.hasNext()){ nextline = bufferinput.nextLine(); dataArray = nextline.split(","); for(i = 0; i<colNum;i++){ //Try-Catch to search through dataArray and push it into sqlData arraylist. try{ if(!dataArray[i].toString().isEmpty()){ sqlData.add(dataArray[i].toString()); } //else if used to find empty cells between non empty cells (Have to test to see if opposite of if-statement works) else if(dataArray[i].toString().equals("")){ sqlData.add(null); } } //Catch is necessary to find the cells not at the end of the row in a text file. catch(ArrayIndexOutOfBoundsException e){ sqlData.add(null); } } }

このデータの例は、 "Ontario、Canada"、XXXXX .....

のようなものです。

位置は、アドレスにコンマが含まれているため、その最大の原因です。

英語

I'm trying to parse some data sets to through into a database. The CSV files that i'm working with have the data separated by commas. However there is some data that is encompassed by quotation marks which include commas that are part of that string. How do i step through each line of data and parse out each data entry given this obstacle?

edit: CSV parsers are not an option because this program will be used for non csv files. And i'm trying to minimize external libraries.

I found the issue because of my code here would just parse through the quotes:

while(bufferinput.hasNext()){              nextline = bufferinput.nextLine();             dataArray = nextline.split(",");              for(i = 0; i<colNum;i++){                 //Try-Catch to search through dataArray and push it into sqlData arraylist.                 try{                     if(!dataArray[i].toString().isEmpty()){                         sqlData.add(dataArray[i].toString());                     }                     //else if used to find empty cells between non empty cells (Have to test to see if opposite of if-statement works)                     else if(dataArray[i].toString().equals("")){                         sqlData.add(null);                     }                 }                 //Catch is necessary to find the cells not at the end of the row in a text file.                 catch(ArrayIndexOutOfBoundsException e){                     sqlData.add(null);                 }              } } 

An example of this data would be something like ,,"Ontario, Canada",xxxxx.....

Locations are the biggest cause of it as the address contains a comma.

</div
        
         
         

回答リスト

0
 
vote

だからこれは本当に簡単な修正でした。私が変更しなければならなかったのはこれまでの分割行でした:

<事前> <コード> dataArray = nextline.split(",(?=([^"]*"[^"]*")*[^"]*$)");
 

So this was a really easy fix. All i had to change was my split line to this:

dataArray = nextline.split(",(?=([^"]*"[^"]*")*[^"]*$)"); 
</div
 
 

関連する質問

107  NETでCSVファイルを強く型付けされたデータ構造にインポートする[閉じる]  ( Import csv file to strongly typed data structure in net ) 
現在立つにつれて、この質問は私たちのQ&AMPにとって良いフィットではありません。フォーマット。私たちは事実、参考文献、または専門知識によって支持されることを期待していますが、この質問は...

1  iPhone加速度計> CSV> Eメール  ( Iphone accelerometer csv email ) 
私が取り組んでいる機械学習プロジェクトのためのデータを収集しようとしています。私がやりたいことはiPhoneから加速度計データを収集し、それをCSVに保存して自分に電子メールで送ってください。私のアプリは現在加速度計からのデータを取得することができますが、進行...

116  Java libまたはアプリCSVをXMLファイルに変換するには? [閉まっている]  ( Java lib or app to convert csv to xml file ) 
この質問はスタックオーバーフローガイドラインを満たしていません。現在答えを受け付けていません。 この質問を改善したいですか? ...

88  SQL Server 2005からMySQLにデータをエクスポートする方法[閉じた]  ( How to export data from sql server 2005 to mysql ) 
閉じたこの質問はオフトピックです。現在答えを受け付けていません。 この質問を改善したいですか?質問を更新するスタックオーバーフロ...

1  複数のバッチファイルを動的に処理し、Spring Batchを使用して対応する出力ファイルの生成  ( Dynamically processing multiple batch files and generating corresponding output ) 
非同期バッチ処理、ジョブの停止、およびいくつかの既存のバッチ処理機能を置き換えるためのいくつかの高度な機能のいくつかを利用するために、Spring Batchの学習を開始しました。今、私は複数のバッチファイルを動的に処理し、入力ファイルごとに「受信」ファイルを...

1  OpenOffice.org JavaでCSVをインポートします  ( Openoffice org import csv with java ) 
OpenOffice.org APIを使用してCSVファイルをインポートする方法"CVSテキスト"フィルタを使用して同じファイルを開くときにも提供されるのと同じ機能を使用してこれをやりたいです。 ...

2  一行あたりの固定数のパイプ区切りフィールドを読みますか?  ( Reading in a fixed number of pipe delimited fields per row ) 
私は生成されたときにキャリッジの返却に適切にエスケープされていなかったパイプ区切りファイルの束を持っているので、CRまたは改行文字を使用して行を区切ることができません。ただし、各レコードは正確に7つのフィールドを持たなければならないことを知っています。 フィー...

0  PowerShell:フィルタリングされた配列の値を設定します  ( Powershell setting values of a filtered array ) 
CSVファイルで読みたい、2つの値に基づいてフィルタリングしたいです。 フィールドと別のフィールドの値を設定します。これが簡単な例です 私が達成しようとしているもののうち: c: forfile.csvの内容: <事前> <コード> firstField,...

3  Pythonで保存されている単純なデータ  ( Simple data storing in python ) 
各行が簡単に解析できる配列の文字列表現であるように、Pythonを使用してデータを格納するための単純なソリューションを探しています。 私はそのような仕事を簡単にするための図書館を持っているのは確かに私が見つけたすべてのアプローチがそれを仕事にするのにずさんだっ...

9  Excelクリップボードデータを受け入れる良いWebベースのグリッドは何ですか?  ( What is a good web based grid that accepts excel clipboard data ) 
貼り付けられたExcelデータを受け入れ、コピー中にExcel準拠のクリップボードデータを発行することができるプラットフォームAnnostic(すなわちJavaScript)グリッド制御/プラグインの任意の推奨事項は? Excelデータは "Normal"ク...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有