Script to generate documents based on conditionals and CSV data
Instead of decoding each field within the CSV as CP1252, you should open the entire file that way.

I think that you should approach this more as a templating problem than a document-generation problem.  Templating is a challenge that has been solved many times before — though mainly generating HTML rather than OOXML.  Authoring OOXML directly looks like it would be a pain though.  Perhaps you would be better off using a templating solution (Django has one built in) to produce semantically correct HTML as an intermediate format.  Then, you can convert the HTML into DOCX using one of many such tools available, involving Python or not.

Basically, that strategy would decompose one programming headache into two solved problems.