Il s'agit d'une question de type Python 101, mais elle m'a laissé perplexe pendant un certain temps lorsque j'ai essayé d'utiliser un paquet qui semblait convertir ma chaîne de caractères en octets.
Comme vous le verrez ci-dessous, j'ai trouvé la réponse moi-même, mais j'ai estimé que cela valait la peine d'être consigné ici en raison du temps qu'il m'a fallu pour découvrir ce qui se passait. Il semble que ce soit générique à Python 3, donc je n'ai pas fait référence au paquetage original avec lequel je jouais ; il ne semble pas s'agir d'une erreur (juste que le paquetage particulier avait un .tostring()
méthode qui a été clairement no produisant ce que j'ai compris comme une chaîne...)
Mon programme de test se déroule comme suit :
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)
Le résultat de ce code est le suivant :
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'
Il est donc nécessaire de pouvoir convertir les octets et les chaînes de caractères, afin d'éviter que des caractères non ASCII ne soient transformés en charabia.