ユーザーによってアップロードされたタブ区切りのファイル(TSV)をPythonで扱う必要があったのでちょっと調べてみました。
テスト環境はGoogle App Engine + Django
from StringIO import StringIO
import csv
def file_upload(request):
s = StringIO(request.FILES['file']['content'])
contents = csv.reader(s, delimiter='\t')
lines = []
for line in contents:
lines.append(line)CSVは Comma Separated Valuesの略字ですので、原則はカンマ区切りで構成されたものです。
ですが、Pythonのcsvモジュールはオプションで区切り文字を指定できるので、タブ区切りでもこのモジュールを活用することが可能です。
csv.readerの第1引数は
イテレータプロトコルをサポートし、next メソッドが呼ばれた際に常に文字列を返すような任意のオブジェクトにすることができますとのことなので、アップロードされたファイルを設定したStringIOインスタンスを指定します。
delimiter引数が区切り文字です。
タブ区切りを扱いたいので、ここでは \t を指定しています。
こちらのエントリを参考にさせていただきました。
http://d.hatena.ne.jp/gonsuzuki/20090401/1238562547
csvモジュールのリファレンス
http://www.python.jp/doc/release/lib/module-csv.html


0 コメント:
コメントを投稿