Pythonで元CSVファイルの一部列を抜き出す
Python初心者です。どうぞよろしくお願い致します。
インターネットを色々検索していますが苦戦していますので投稿させてください。
下記のような元CSVファイルから、不要な列だったり、空白の列をカットして
必要な列だけのCSVとして新たなファイルとして出力したいと思っています。
元CSVファイル (上からタイトル行とサンプル2行抜き出し)※Excelでの画像添付しています
ID,URI,body,text_author,text_flg,text_source,text_updatetime,text_url,DATE,DATE_2
1, csv://10.182.XXX, "comment A, comment B, comment C", Mr.A, , SourceA, , http://www.yahoo.co.jp, 1.37667E+12, 20130817
2, csv://10.183.XXX, "comment D, comment E, comment F", Mr.B, , SourceB, , http://www.goo.co.jp, 1.37667E+12, 20130817
(期待する出力結果)
body,text_author,text_source,text_url,DATE_2
"comment A, comment B, comment C", Mr.A, SourceA, http://www.yahoo.co.jp, 20130817
"comment D, comment E, comment F", Mr.B, SourceB, http://www.goo.co.jp, 20130817
つまり、元のファイルの列の(一番左がRow(0)として)Row(2),Row(3), Row(5), Row(7), Row(9)だけを
各行抜き出して新たなCSVファイルとして出力したいと思っています。
ちなみに行数は1000の場合も10000の場合もあります。
最初は、gawkで処理しようと思っていましたが、抜き出したいうちのひとつRow(2)には、
不定期で複数のカンマが含まれているため、gawkでは正しく列分類ができず、
Pythonを学習がてらうまくできないかと思っています。
実は締め切りが近いので結構あせっているのですが、(自分のセンスのなさにヘキヘキ・・)
どなたかこのようにCSVを処理できるPythonのやり方を教えて頂けないものでしょうか。
どうぞよろしくお願い致します。
お礼
永らく、回答もせず、放置して申し訳ありません。 ご回答頂いたスクリプトでは動かず、 結局、会社で分かっている若手に指導をしてもらいました。 次のようなスクリプトで動きました。 require "CSV" reader=CSV.open("data.csv","r") writer=CSV.open("output.csv","w") header=reader.take(1)[0] f=Array.new p header # 1行目読み飛ばし i=0 reader.each do |row| f[0]=row[1] f[i]=row[7] i=i+1 if i==29 then writer <<f i=0 end end writer.close()