データとスプレッドシート · CSV クリーナー
セミコロン区切り CSV の説明: 小数点カンマとロケール設定
· 背景
csv 区切り文字 相互運用性
ヨーロッパの多くの地域では、カンマが小数点の区切り文字であるため、「カンマ区切り」ファイルでは代わりにセミコロンが使用されます。この投稿では、分割の背後にあるロケール ロジック、スプレッドシートがどのように決定するか、ファイルが国境を越えたときに何が起こるかについて説明します。
海外の同僚からのファイルは 1 つの列として開きます - ほとんどの人は CSV に方言があることに気づきます
カンマのみを前提として開かれたセミコロン エクスポートは、1 つのワイド テキスト列として表示されます。この症状はパーサーの選択を反映しており、データが破損していることを示すものではありません。 ToolAcre は、コンマ、タブ、パイプと並んでセミコロンを提供し、実際に使用された文字をコントロールに書き込みます。
最初の応答は構造的なものである必要があります。生のセパレータを検査してプレビューします。すべてのセミコロンをやみくもに置き換えないでください。引用されたテキストには句読点が含まれている可能性があり、解析せずにバイトを変更すると値が変更される可能性があるためです。方言を認識した読み取りでは、セパレータとセルの内容が区別されます。
10 進数のカンマ — '1,5' が多くのロケールで有効な数値である理由、およびカンマ区切り文字を使用すると解析できなくなる理由
このワークブックでは、セミコロンから小数点のコンマまでについて説明しています。これは便利な交換コンテキストですが、この実装では `1,5` をローカライズされた数値として解析することはありません。セルを文字列として保存します。したがって、値内のカンマの意味とフィールド間のセミコロンの意味は、解析時に分離されたままになります。
宛先スキーマで明示的に要求されない限り、区切り文字を修復するときに小数点を変換しないでください。コードまたは散文フィールドには正当にカンマが含まれる場合があります。 ToolAcre はテーブルの境界を処理し、数値の解釈を受信アプリケーションに任せます。
小数カンマのコンテキストは妥当ですが、ToolAcre はセル値を文字列として扱い、ローカライズされた数値を解析しません
このツールは、オペレーティング システムの地域設定やリスト区切り文字の設定を参照しません。自動検出は、サポートされている各候補の下の 10 行のサンプルを解析し、最大幅を測定し、一貫した長方形を生成する候補に報酬を与えます。いずれも少なくとも 2 つの列を作成しない場合は、カンマに戻ります。
このファイル駆動型の方法は、複数の場所で再現可能です。通常とは異なるデータや単一列のデータでは選択が不十分になる可能性があるため、手動セレクターが存在します。コントロールは検出された値を反映し、値を変更すると元のテキストが再解析され、既に適用されているクリーニング手順は破棄されます。
ToolAcre はファイルの形状を検出します。オペレーティングシステムのリスト区切り文字設定は読み込まれません
間違った区切り文字を使用すると、セミコロン レコードが複数の列にならず、1 つのセルのままになります。 ToolAcre はローカライズされた数値を解釈しないため、解析中に `1,5` をサイレントに別の数値に変更することはできません。失敗は列数とプレビュー形状で確認できます。
逆方向の不一致により、引用符で囲まれていないカンマが余分なセルに分割され、不規則な行の警告がトリガーされる可能性があります。引用符で囲まれたカンマは、ステート マシンの下で保護されたままになります。警告を読み、最初の行が後続のすべてのレコードが整列していることを証明すると仮定するのではなく、予想されるヘッダー幅を比較してください。
パーサーは、暗黙の数値変更ではなく、構造的な読み取り値を表示します。
`item;price;note` の後に `A;1,5;"small, red"` と `B;2,0;plain` を続けて使用します。セミコロン解析では、両方のカンマを含む文字列を保持した 3 つの列が生成されます。カンマ解析ではフィールド内にセミコロンが残り、代わりにカンマの周囲に誤解を招く分割が作成される可能性があります。
検出器はセミコロンを優先する必要があります。これは、その候補では一貫した 3 列の形状が得られますが、カンマはそうではないためです。この例では、1,5 に数値があるとは主張せずに、パーサーの動作を証明します。受信側システムは、文書化された独自の 10 進表記規則を適用する必要があります。
実用的な例: カンマを含む文字列値によるセミコロンの検出
送信者と受信者の名前の区切り文字、エンコーディング、ヘッダー ポリシー、および値の規則により、国境を越えた交換が改善されます。 「CSV」だけでは、いずれも解決されません。小さなフィクスチャを組み込み、実稼働エクスポートを送信する前に、正確な受信パーサーを通じてそれを検証します。
コンマ出力が必要な場合は、セミコロン ソースが正しく解析された後、シリアル化するためにコンマを選択します。小数点カンマを含むフィールドは自動的に引用符で囲まれ、セル テキストとして保存されます。構文変換では、10 進表記や通貨形式は変換されません。
これでカバーされないもの — データ内の数値形式の変換。区切り文字と小数点は別の問題です
数値形式の変換は、ToolAcre の区切り文字修復の範囲外にあります。カンマを小数点に変換したり、桁区切り文字を認識したり、金額をキャストしたりすることはありません。これは意図的な文字列の保存であり、不完全な数値推論ではありません。宛先スキーマはその変換を所有します。
ルートでは、ファイルを開くときにスプレッドシート アプリケーションが区切り文字を選択する方法も保証できません。出力で選択された区切り文字と、競合する文字を囲む標準の引用符のみを生成できます。ベンダーの動作を考案するのではなく、ターゲット アプリケーションをテストします。
区切り文字はファイルではなくロケールに従います — ToolAcre CSV Cleaner の区切り文字修復により、既知の区切り文字が 1 つ含まれるファイルが得られる仕組み
このツールでは、区切り文字はロケール設定ではなく、解析されたファイルの形状または手動の選択に従います。異なるオフィスにいる 2 人のアナリストが同じテキストを読み込むときに、同じ検出されたソース文字が表示されるはずなので、この修正は重要です。環境はパーサーの候補リストを書き換えません。
コントロールを確認し、行幅を検査し、既知のコンシューマーに対してエクスポートします。セミコロンは、壊れたコンマ CSV でも、10 進数のコンマ データの自動証明でもありません。これはサポートされている構造区切り文字の 1 つであり、ToolAcre は区切り文字間のすべての値をテキストとして扱います。