Updated with a bug fix: my code to work with both Python's byte strings and Unicode strings was doing neither successfully.
In this new version Arc strings are always converted to a Python Unicode string u'...'; I'll probably add a function to generate a Python byte string '...' at some point.
The Python code currently generates ugly Arc strings with every character escaped; I'll fix that when I have some more time.