YouTubeで生成されたCSVファイルの一部を処理しています(ソース構造を変更できません)。 CSV ファイルでは、一部のレコードは複数行にまたがっています。簡潔にするために他の多くの列を省略した仮想の例は次のとおりです。
video_id, upload_time, title, policy
oHg5SJYRHA0, 2007/05/15, "RickRoll'D", "Monetize in all countries except: CU, IR, KP, SD, SY
Track in countries: CU, IR, KP
Block in countries: SD, SY"
dQw4w9WgXcQ, 2009/10/24, "Rick Astley - Never Gonna Give You Up", "Monetize in all countries except: CU, IR, KP, SD, SY
Track in countries: CU, IR, KP, SD, SY"
一般的なファイルには、数十万または数百万のレコード(1つのファイルサイズは29.57 GB)が含まれています。これは、一度に処理するには大きすぎるため、それをより小さな塊に分割して他のプロセスで処理できるようにしたいと思います。マシン。以前は別のレポートファイルでsplit
withを使用したこと-l
がありますが、セルに改行がない場合は非常にうまくいきました。この場合、間違った行(例の4行目)で分割が発生した場合、両方のファイルに破損したレコードがあります。 CSVファイルを解析してから複数のファイルに再構成するだけでなく、このようにCSVを分割する効率的な方法はありますか?
ベストアンサー1
必要な方法でより小さな単位に再エクスポートするには、CSVファイルを解析する必要があります。その間、もう少し厳密で明確に定義された他の形式(例:ああ、わからない、json)に再エクスポートしたいかもしれません。
入力ファイルの形式は非常に珍しいです。Pythonのcsvモジュールまず、,
より一般的な区切り記号(カンマスペース)の代わりに複数文字区切り記号(カンマスペース)があるため、解析できません,
。それ以外の場合は、5行のPythonコードでファイルを簡単に解析して再エクスポートできます。
動作する他のパーサーを探すか、小さなパーサーを作成する必要があります。まず、引用規則が何であるか("
フィールドが含まれている場合に何が起こるかなど"
)、現在持っている形式の詳細を探します。