ファイルじゃなくて文字列で渡されたcsvをパースしたかった
ファイルじゃなくて文字列でcsvが欲しかった - やつらかやつらだの逆をしたかった。
どうってこと無く普通にStringIOだった。便利。
csvモジュールはunicode文字列に対応していないんですって。
なのでunicode文字列をutf-8として文字列に変換してから渡してる。
# -*- coding: utf-8 -*- import csv import StringIO source_csv = u'''string,item1,foo string string,item2,"bar ""quoted"" string" string,item3,文字列 ''' s = StringIO.StringIO(source_csv.encode('utf8')) csv_reader = csv.reader(s) for row in csv_reader: print ' / '.join(row)
coding: utf-8指定してるから文字列として渡しても動くけど、外から受け取る日本語まじりのデータってたいていunicode文字列なのでまあ。。
# -*- coding: utf-8 -*- import csv import StringIO source_csv = '''string,item1,foo string string,item2,"bar ""quoted"" string" string,item3,unicode文字列 ''' s = StringIO.StringIO(source_csv) csv_reader = csv.reader(s) for row in csv_reader: print ' / '.join(row)