カンマって値中に入っていがちなので、カンマ区切りのファイルってめんどくさいですよね。
例えばこんなファイルから
1,A,apple,pie
2,B,"banana,blueberry",juice
3,C,cherry,pie
次のように3列目だけ抜き出したい場合
apple
banana,blueberry
cherry
カンマで区切ろうとすると値中のカンマが邪魔になります。
いろいろ考えてみたのですが、次の手順が比較的簡潔なのかなと思いました1。
- 行をダブルコーテーションで区切ってタプルに入れる
- タプルの奇数番目にあるカンマを別の文字(この例では空白2)に置換する
- 2を結合した後、カンマで区切る
parseComma.py
for line in inFh:
line = line.rstrip()
cols = line.split('"')
tmp = [col.replace(",", " ")
if ind%2==1 else col
for (ind, col) in enumerate(cols)]
line = "".join(tmp)
cols = line.split(",")
(以下略)
調べないで書きますが、もしかしたらこういうののいいパーサーがあるのかもしれないですね。
ついでにどうでもいいことですが、カンマなのかコンマなのか、ダブルコーテーションなのかダブルクォーテーションなのかも悩ましいです。