Це питання типу Python 101, але це мене збентежило на деякий час, коли я спробував використати пакет, який, здавалося, перетворив мій вхідний рядок у байти.
Як ви побачите нижче, я знайшов для себе відповідь, але я відчував, що варто це робити тут, оскільки мені знадобився час, щоб розкопати те, що відбувається. Здається, це загальний для Python 3, тому я не посилався на оригінальний пакет, з яким я грав; здається, це не помилка (просто те, що конкретний пакет мав .tostring()
метод, який явно не давав того, що я розумів як рядок ...)
Моя тестова програма виглядає так:
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)
Результат цього коду дає таке:
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'
Отже, потрібно мати можливість конвертувати між байтами та рядками, щоб уникнути того, щоб символи, що не є ascii, перетворювались на gobbledegook.