CSV ファイルをパースする方法
引用符付きフィールド、フィールド内カンマ、複数行の値を正しく処理して CSV ファイルをパースします。
问题
引用符で囲まれた値の中にカンマ、引用符、改行が含まれると、CSV パーサーが正しく動作しません。
前提条件
- CSV 形式の理解
- RFC 4180 の引用規則に関する知識
ステップ
-
1. Understand RFC 4180 rules
Fields containing commas, double quotes, or newlines must be enclosed in double quotes. Quotes inside quoted fields are escaped by doubling them (""). A proper parser follows these rules rather than simply splitting on commas.
入力"Smith, John",30输出one field: 'Smith, John' -
2. Use a standards-compliant parser
Use a CSV parser that implements RFC 4180 rather than a naive string split. The parser should handle quoted fields, escaped quotes, and multiline values. Specify the delimiter, quote character, and encoding explicitly.
入力CSV with quoted fields输出correctly parsed rows -
3. Handle edge cases
Account for BOM at the start of the file, different line endings (CRLF vs LF), empty fields, and trailing delimiters. Decide on a policy for rows with inconsistent field counts. These edge cases are common in real-world CSV files.
入力BOM + CRLF + empty fields输出handled gracefully
期待される結果
引用符付きフィールド、埋め込み区切り文字、複数行の値が正しく処理された、正しくパースされた CSV データ。
よくあるエラー
- Naive split on comma breaks quoted fields
- Never use a simple string.split(','). Use a proper CSV parser that respects quoting rules.
- BOM appears as a hidden character in the first field
- Detect and strip the UTF-8 BOM (EF BB BF) before parsing, or use a parser that handles it automatically.
トラブルシューティング指引
- If rows are misaligned, check for unquoted fields containing commas or inconsistent line endings.
- For very large files, use a streaming CSV parser to process rows one at a time.
セキュリティ上の制限
- CSV injection: cells starting with =, +, -, or @ can execute formulas in spreadsheet apps. Sanitize if output will be opened in Excel.