問題タブ [textfieldparser]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - CSV データの解析
運の悪いデータを含む CSV ファイルを解析しようとしています。オンラインでさまざまなツールを試しましたが、CSV ファイルを正しく解析できるツールはありませんでした。CSVデータの解析は非常に簡単だと思うので、ここで助けを求めているという事実に困惑しています。
CSV データの形式は次のようになります。
現在のコード:
結果変数には 1 つの項目のみがあり、次の項目があります。
c# - C# textFieldParser エラー
csv ファイルを読み取るための次のコード セグメントがあります。本当に標準的ではない行を読むことに問題があります。たとえば、次のような行
2 番目のフィールド「XXX Bank Azerbajan」CJSC には、コンマのすぐ隣に引用符がないため、catch フィールドに入ります。ただし、このファイルを Excel で開くと、問題はなく、次のようにフィールドが正しく分割されます。
|
列区切りとして使用した場所。を使用して同じ効果を得る方法はありTextFieldParser
ますか。それ以外の場合は、別の csv リーダーを使用する必要があります。
c# - Microsoft.VisualBasic.FileIO.TextFieldParserを使用してCSVファイルを注文するにはどうすればよいですか - 昇順降順
私のファイルの中に私は持っています:
順番:ID、名前、給料。
C# TextFieldParser を使用して CSV パーサーに取り組んでいます。
そして、コンマで区切り文字を使用します
内部のデータを並べ替えるにはどうすればよいですか? 関数 Split を使用せずに Linq を使用する
どうもありがとう
c# - TextFieldParser と無効な行
当社では、CSV ファイルを提案してくれるベンダーから配信フィードを受け取ります。ただし、テキスト フィールド内の引用文字をエスケープできないため、いくつかの行が無視されます。テキスト フィールド パーサーを使用します。
不良行の例:
"CABLES TO GO"、"87029"、"5.0200"、"47"、"757120870296"、"87029"、"WP SGL ALUM 1 1/2" グロメット"
対応するコード スニペットは次のとおりです。
また、このベンダーは、ソース ファイルを変更してこれらの引用符をエスケープすることができません。このようなこれらの行の最善の回避策は何ですか?
c# - 可変長文字列での TextFieldParser.FixedWidth の使用
固定幅形式 (8 文字 x 10 列) でデータを読み取るためのパーサーに取り組んでいます。ただし、そうでない場合もあり、これを満たさない領域に有効なデータがある場合もあります。エスケープ文字 (下の図の + など) があると想定するのは安全ではありません。これはいくつかの形式の 1 つです。
TextFieldParser.FixedWidth を使用して 8x10 の入力を試みましたが、この量に満たないものはすべて代わりに ErrorLine に送信されます。
例外をキャッチするブロックから解析するのは良い習慣とは思えませんね。
追加の作業が必要なのは不一致の行だけなので、ブルートフォースサブメソッドが最善のアプローチですか? すべてのデータは常に 8 文字のブロックになります。行の最後のブロックは、手動で入力すると短くなる可能性があるという点で扱いにくい場合があります。(#1 は実行しても問題ないことを前提としています)
使用するより良いツールはありますか?固定幅のテキストフィールドパーサーで丸い穴に四角いペグをはめようとしているような気がします。
注: 区切り構文解析はオプションではありません。2 番目の図を参照してください。
明確化のために編集: 以下のテキストは、有限要素コードである NASTRAN の入力デッキの抜粋のペアです。私は、テキスト ファイルを読み取り、分割された string[] を他のメソッドに渡して、実際に各カードを特定のマップされたオブジェクトに処理する、一般化された解析メソッドを持つことを目指しています。(例: 下の画像では、2 つのオブジェクト タイプは RBE3 と SET1 です)
抽出方法:
c# - データのない CSV 行を無視する
ここでこれについて何も見ていないことに驚いています(または見逃したかもしれません)。CSV ファイルを解析するときに、データのない行がある場合、どのように処理できますか? 私は空白行について話しているのではなく、たとえば次のような空の行について話している:
私は TextFieldParser を使用して、データ内のカンマや複数の区切り記号などを処理しています。私が考えた 2 つの解決策は、ReadFields の代わりに ReadLine を使用することですが、それでは TextFieldParser を使用する利点が失われると思います。コンマを別の方法で処理する必要があります。もう 1 つのオプションは、フィールドを反復処理し、すべてのフィールドが空の場合に行を削除することです。ここに私が持っているものがあります:
c# - TextFieldParser が EndOfData フィールドを設定していない
私にはValidate(Stream inputStream)
方法があります。このメソッドは、 inputStreamをそれぞれに渡すことによって、他のいくつかの検証メソッドを呼び出します。これらはそれぞれ、新しいファイルを作成しTextFieldParser
、ファイルを読み取り/検証します。
最初ValidateA(inputStream)
に呼び出されると、機能します。しかし、2番目ValidateB(inputStream)
が呼び出されると、これparser.EndOfData
はtrueなので、フィールドを読み取りません。
コードを最も単純な形式にクリーンアップしようとしました。
ここで問題が発生します。EndOfData
フィールドがリセットされないため、ValidateB メソッドはファイルを処理できません。