ファイルじゃなくて文字列で渡された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)