特にフォーマットされた区切りファイルを解析するためにcsvモジュールを使用しようとしています。私はPython 3.5を使用しています。Pythonのcsvモジュールを使用してテキストファイルを解析する問題
この形式は第三者によって提供されており、すべての場合にcsvモジュールを使用して表現することに問題があります。テキスト・データ型として指定された列は、二重引用符で囲まれた値を持ちます。日付と数値には、パイプ(デリミタ)の間に見積もり値はありません。問題は、複数のフォーマットを試してみると、1つの真ん中の二重引用符を残すか、\ - >空白のような情報を失うという点で問題が発生します。私はこのために正規表現を使用する必要はないと思っています。したがって、csvモジュールを使用する方法があれば、それは素晴らしいでしょう。
ルール:
エスケープ文字は "\"
- タブのエスケープです:\トン
- 改行文字:\ nは
- バックスラッシュ文字:\\
- 内側の引用文字:\ "
- 区切り文字= |
- 日付にはqがありませんuotes。私は様々な方言のパラメータをしようとするとNaN値(空のパイプ||)を含む
- 数字は、私が正しく、このcsvファイルを解析することができないよう、何の引用符
を持っていません。バックスラッシュを空白に変換したり、内部引用符を間違って配置したりするなど、csvモジュールを使用する方法はありますか、後処理を行うか、独自の正規表現を作成する必要がありますか?
import csv
import os
dialect_params = {'delimiter': '|'} # help needed here.
newline_sample = '"I went to dinner. \n Then I went to a show."'
quote_sample = '"I read the \"WSJ\", did you?"'
backslash_sample = '"Boasberg\\Wheeler Communications, Inc."'
na_sample = 'N\A'
date_sample = '2013-04-23'
number_sample = '1.3'
text_sample = '|'.join([newline_sample, quote_sample,
backslash_sample, na_sample,
date_sample, number_sample]) + '\n'
csv.reader(iter([text_sample]), **dialect_params)
このコードは正しいですか?定義された 'lines'が見えません。 – strubbly
「backspace」と言うとバックスラッシュを意味しますか?私はあなたがそれに何らかの問題を抱えていることに驚いています:csv形式は、デフォルトでバックスラッシュを特別なものにしません。 – strubbly
あなたの 'quote_sample'に本当にリテラル' \ "'または単なる引用符(Pythonは後者を与えるでしょうか)をしたいのですか? – strubbly