小知识:在Python中,不支持字符类型,单个字符也是字符串。
(1)Unicode字符串:不以u/U、r/R、b/B开头的字符串,或以u/U开头的字符串。注意:在输出Unicode字符串时,如果字符串中包含Unicode编码,会自动将其转换成对应的字符。
(2)非转义的原始字符串:以r/R开头的字符串。
(3)bytes字节串:以b/B开头的字符串。
可以使用encode()函数和decode()函数在Unicode字符串和bytes字节串之间转换。或者使用str()函数和bytes()函数在这二者之间转换。
示例1:
s1="abcd" #不以u/U、r/R、b/B开头的字符串是Unicode字符串
s2=u"ab\u0020\u0020cd" #以u/U开头的字符串都是Unicode字符串
s3="ab\u0020\u0020cd" #会将其中的Unicode编码输出成实际字符
print(s1,s2,s3,sep="\n")
运行结果如下图:
从示例1可以看到,在Unicode字符串中包含的“\u0020"Unicode编码被显示成了其对应的字符,这是Unicode字符串的特性。
示例2:
s1=r"d:\test.text" #非转义的原始字符串
s2=r"ab\u0020cd"
print(s1)
print(s2)
运行结果如下图:
从示例2可以看到,以r/R开头的非转义字符,虽然有转义字符或Unicode编码,但在输出显示时只会当做普通字符看待。
示例3:
s1="中国"
s1_utf8=bytes(s1,"utf8") #使用bytes()函数,将Unicode字符串转换成byes字节串。或者使用encode()函数
s1_gbk=bytes(s1,"gbk")
print(s1_utf8)
print(s1_gbk)
print(str(s1_utf8,"utf8")) #使用str()函数,将byes字节串转换成Unicode字符串。或者使用decode()函数。
print(str(s1_gbk,"gbk"))
运行结果如下图:
从示例3可以看到,以b/B开头的字节串。