Pythonでメモリ内のデータをStringIOに変換してcsv.readerに読み込ませる
CSVファイルを読み込んで文字列の置換を行った後、
csv.readerに読み込ませたい。
メモリ内のデータをStringIOに変換すると
csv.readerに読み込ませることができた。
「test.csv」の内容
a,b 1,<2> 3,<4>
import csv import io with open('test.csv') as f: #ファイルの1行目がタイトル行なので読み飛ばす header = f.readline() #ファイルの2行目以降を読み込む data = f.read() #文字列置換 data = data.replace('<', '<').replace('>', '>') #置換後のデータをテキストI/Oに変換してcsv.readerに渡す csv_data = csv.reader(io.StringIO(data)) for line in csv_data: print(line)
StringIOに変換しないで、そのまま文字列をcsv.readerに渡すと
エラーにはならないが、
それによって作られたオブジェクトをforでイテレートすると
望むような処理にならなかった。
(CSVファイルの内容を1行ずつ処理したかったが、
カンマで区切られたデータごとにイテレートされてしまった。)