Como converter entre bytes e strings no Python 3?

Esta é uma pergunta do tipo Python 101, mas fiquei intrigado por algum tempo quando tentei usar um pacote que parecia converter minha entrada de string em bytes.

Como você verá abaixo, encontrei a resposta para mim, mas senti que valeu a pena gravar aqui por causa do tempo que levei para descobrir o que estava acontecendo. Parece ser genérico para o Python 3, então não me referi ao pacote original com o qual eu estava jogando; não parece ser um erro (apenas que o pacote em particular tinha um.tostring() método que foi claramentenão produzindo o que eu entendi como uma corda ...)

Meu programa de teste é assim:

import mangler                                 # spoof package

stringThing = """
<Doc>
    <Greeting>Hello World</Greeting>
    <Greeting>你好</Greeting>
</Doc>
"""

# print out the input
print('This is the string input:')
print(stringThing)

# now make the string into bytes
bytesThing = mangler.tostring(stringThing)    # pseudo-code again

# now print it out
print('\nThis is the bytes output:')
print(bytesThing)

A saída deste código fornece isto:

This is the string input:

<Doc>
    <Greeting>Hello World</Greeting>
    <Greeting>你好</Greeting>
</Doc>


This is the bytes output:
b'\n<Doc>\n    <Greeting>Hello World</Greeting>\n    <Greeting>\xe4\xbd\xa0\xe5\xa5\xbd</Greeting>\n</Doc>\n'

Portanto, é necessário ser capaz de converter entre bytes e strings, para evitar que os caracteres não ascii sejam transformados em gobbledegook.

questionAnswers(4)

yourAnswerToTheQuestion