Assuming you're using a PyTMX version > 2.16.5, this looks like a bug in its Python 3 support.
I'd try replacing "data = b64decode(data_node.text.strip())" with something like "data = b64decode(data_node.text.strip().encode())" and seeing if that improves anything. But this isn't a PyGame issue. Ian