OK, it turns out I had to tweak the parsing minimally for Python3:
1) Substrings such as st[5] no longer work (returns an ascii number),
instead st[5:6] selects one character
2) Replacements need to specified as bytes: s.replace('R','*') change
to s.replace(b'R',b'*')
So I think this problem is solved.
-- Gnarlie