二进制字符串,字节字符串,unicode字符串和普通字符串(str)之间的区别

Imr*_*zad 15 python

我有点困惑.在Python中,二进制字符串,字节字符串,unicode字符串和普通旧字符串(str)之间的区别是什么?我正在使用Python 2.6.

Mar*_*ers 20

这取决于您使用的Python版本.

在Python 2.x中如果你写'abc'它有类型str但这意味着一个字节串.如果你想要一个Unicode字符串,你必须写u'abc'.

在Python 3.x中,如果你编写'abc'它仍然有类型str但现在这意味着它是一个Unicode字符串.如果你想要一个字节串,你必须写b'abc'.不允许写u'abc'.

        |  2.x                     |  3.x
--------+--------------------------+-----------------------
Bytes   |  'abc' <type 'str'>      |  b'abc' <type 'bytes'>
Unicode | u'abc' <type 'unicode'>  |   'abc' <type 'str'>
Run Code Online (Sandbox Code Playgroud)

  • @Imran Azad:您可以将字节字符串视为有序的字节列表 - 即0到255之间的整数.Unicode字符串是Unicode字符的有序列表(字母,数字,标点符号,小雪人(☃)等).我认为混淆来自Python 2.x将字节字符串视为字符串.这几乎可以工作,除非你开始使用ASCII范围以外的字符时遇到问题. (2认同)