じゃあピッコロがCSVリーダーについて真剣に考えてみようと思います

読み取りを知るには書き込みからということで
CSVを書き込むときにどのような処理を行うかを分析して
それをリバースすればよいわけです

書き込みのときにどのように処理を行いますか

値に区切り文字が含まれていたら値全体をダブルクオートで囲みます
値にダブルクオートが含まれていたらダブルクオートを2つ並べて値全体をダブルクオートで囲みます

ダブルクオートを2つ並べる処理よりも値全体をダブルクオートで囲む処理を先に行ってしまうと
囲むダブルクオートも二重になってしまうので処理の順番は

1) ダブルクオートを2つ並べる
2) 値全体をダブルクオートで囲む

こうなるわけです
読み込みのときはこれを逆順に処理します

1) 値全体を囲むダブルクオートを除去する
2) 2つ並んだダブルクオートを1つにする

これで読み込みの処理は完成です