Примерно так
Разбейте данные CSV на столбцы.
>>> m=re.findall(r'(".*?"|[^"]*?)(,\s*|\Z)',s,re.M|re.S)
>>> m
[('foo', ','), ('bar', ',\n'), ('"hihi"', ','), ('"hi\nhi"', ''), ('', '')]
Замените только экземпляры полей '\ n' на ''.
>>> [ field.replace('\n','') + sep for field,sep in m ]
['foo,', 'bar,\n', '"hihi",', '"hihi"', '']
Соберите полученный материал (если это действительно так.)
>>> "".join(_)
'foo,bar,\n"hihi","hihi"'