最初はこれは明白に思えましたが、今ではよくわかりません。
CSV ファイルに次の行がある場合:
a,
これは、値が "a" と "" の 2 つのフィールドとして解釈します。しかし、空の行を見ると、値 "" を持つ 1 つのフィールドを意味していると簡単に主張できます。
ファイルの末尾にある空の行は、ファイルの末尾 (フィールドなし) として解釈されるべきであることに同意します。しかし、ファイル内の空の行が何を意味するかについて、誰かが情報を持っていますか?
最初はこれは明白に思えましたが、今ではよくわかりません。
CSV ファイルに次の行がある場合:
a,
これは、値が "a" と "" の 2 つのフィールドとして解釈します。しかし、空の行を見ると、値 "" を持つ 1 つのフィールドを意味していると簡単に主張できます。
ファイルの末尾にある空の行は、ファイルの末尾 (フィールドなし) として解釈されるべきであることに同意します。しかし、ファイル内の空の行が何を意味するかについて、誰かが情報を持っていますか?
CSV ファイルを読み取るときに Excel が空行を処理する方法を見ると、Excel が空行を無視していないことがわかります。
残念ながら、Excel の列数は常に同じであるため、空の行が空のフィールドとして扱われたのか、フィールドがまったくないものとして扱われたのかを判断する方法はありません。
空白行をどのように処理するかのオプションがある CSV 形式の独自の使用法をいくつか見ました。結局、これが私が取ったアプローチです。私の CSV リーダー クラスには、空の行を処理するための 4 つのオプションがあります。
興味のある方は、Reading and Writing CSV Files in C#の既存の記事を置き換える新しいソース コードを投稿します。
空の行が複数行の引用符で囲まれたフィールドの一部である可能性があることに注意してください。
1,2,"this
is
field number
3",4,5
有効なCSVです。
私が見たほとんどのCSVファイルでは、フィールドの数は行ごとに一定であるため(必ずしもそうである必要はありません)、CSVファイルに列が1つしかない場合を除いて、(引用符で囲まれたフィールドの外に)空の行が予想されます。間違いです。
確認したところ、PythonのCSVパーサーは空の行を無視します。それは合理的だと思います。
私の理解と経験の限りでは、これはレコードの欠落を意味するものであり、無視する必要があります。EOF として扱わないでください。