To jest pytanie typu Pythona 101, ale przez chwilę miałem kłopot, gdy próbowałem użyć pakietu, który wydawał się konwertować moje dane wejściowe do bajtów.Jak przekonwertować bajty i łańcuchy w Pythonie 3?
Jak zobaczycie poniżej, znalazłem odpowiedź dla siebie, ale czułem, że warto tu nagrywać, ponieważ czas zajęło mi odkrycie tego, co się dzieje. Wydaje się, że jest on generyczny dla Pythona 3, więc nie odniosłem się do oryginalnego pakietu, w którym grałem; nie wydaje się być błąd (wystarczy, że dany pakiet miał .tostring()
metodę, która była wyraźnie nie produkujący co zrozumiałem jako ciąg ...)
Mój program testowy idzie tak:
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)
wyjście z tego kodu daje to:
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'
Tak, istnieje potrzeba, aby móc konwertować między bajtów i ciągi, aby uniknąć kończąc znaki spoza ASCII zamienia się bełkot.
[Pytanie] (http://stackoverflow.com/questions/7585435/best-way-to-convert-string-to-bytes-in-python-3) daje więcej szczegółów w odpowiedzi, ale myślę, że krótsza odpowiedź poniżej jest bardziej jasna. – Bobble