Pythonでメモリ内のデータをStringIOに変換してcsv.readerに読み込ませる

CSVファイルを読み込んで文字列の置換を行った後、
csv.readerに読み込ませたい。

メモリ内のデータをStringIOに変換すると
csv.readerに読み込ませることができた。

「test.csv」の内容

a,b
1,&lt2&gt
3,&lt4&gt
import csv
import io

with open('test.csv') as f:
    #ファイルの1行目がタイトル行なので読み飛ばす
    header = f.readline()

    #ファイルの2行目以降を読み込む
    data = f.read()

    #文字列置換
    data = data.replace('&lt', '<').replace('&gt', '>')

    #置換後のデータをテキストI/Oに変換してcsv.readerに渡す
    csv_data = csv.reader(io.StringIO(data))

    for line in csv_data:
        print(line)

StringIOに変換しないで、そのまま文字列をcsv.readerに渡すと
エラーにはならないが、
それによって作られたオブジェクトをforでイテレートすると
望むような処理にならなかった。
(CSVファイルの内容を1行ずつ処理したかったが、
カンマで区切られたデータごとにイテレートされてしまった。)