Amen to that. Recalling my struggle still makes me shudder
I ended up with something which processed data for indefinite periods but there was no guarantee that it was correct, no way to test it properly and no certainty that the data source wouldn't one day send something which would break it.
The traditional MicroPython approach might be to write a spec for a "micro" subset of csv and implement that. I doubt that has legs: the purpose of CSV is to be data interchange format. Usually you have no control over the data source. Aside from which, defining a subset of an ill-defined set isn't for the faint hearted.
For serialisation rather than data interchange then the answer is simple. Use a supported library: ujson, pickle, ustruct or protobuf.