一.前言
在讲解 str / bytes /unicode区别之前首先要明白字节和字符的区别,请参考:bytearray/bytes/string区别 中对字节和字符有清晰的讲解,最重要是明白:
字符str是给人看的,例如:文本保存的内容,用来操作的;
字节bytes是给计算机看的,例如:二进制数据,给计算机传输或者保存的;
二.str/bytes/unicode区别
1.在python2.x版本中str/bytes/unicode区别
在python2.x版本中str跟bytes是等价的;值得注意的是:bytes跟unicode是等价的,详情见下图
s1 = u"Hello, World!" s2 = "Hello, World!" print(type(s1)) print(type(s2))
输出:
<type 'unicode'> <type 'str'>
2.在python3.x版本中str/bytes/unicode区别
在python3.x版本中str跟unicode是等价的;值得注意的是:bytes跟unicode是不等价的,详情见下图
s1 = u"Hello, World!" s2 = "Hello, World!" print(type(s1)) print(type(s2))
输出:
<class 'str'> <class 'str'>
三.string与bytes相互转换
1.string经过编码encode转化成bytes
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解忧 @Blog(个人博客地址): shuopython.com @WeChat Official Account(微信公众号):猿说python @Github:www.github.com @File:python_bytes_string_4.py @Time:2020/3/4 10:25 @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累! """ s = "shuopython.com" #将字符串转换为字节对象 b2 = bytes(s,encoding='utf8') #必须制定编码格式 # print(b2) #方法一:字符串encode将获得一个bytes对象 b3 = str.encode(s) #方法二:字符串encode将获得一个bytes对象 b4 = s.encode() print(b3) print(type(b3)) print(b4) print(type(b4))
输出结果:
b'shuopython.com' <class 'bytes'> b'shuopython.com' <class 'bytes'>
2.bytes经过解码decode转化成string
# 字节对象b2 # 如果含有中文,必须制定编码格式,否则报错TypeError: string argument without an encoding b2 = bytes("猿说python", encoding='utf8') # 方法二:bytes对象decode将获得一个字符串 s2 = bytes.decode(b2) # 方法二:bytes对象decode将获得一个字符串 s3 = b2.decode() print(s2) print(s3)
输出结果:
猿说python 猿说python
猜你喜欢:
1.python bytearray/bytes/string区别
转载请注明:猿说Python » python python str/bytes/unicode区别详解
技术交流、商务合作请直接联系博主
扫码或搜索:猿说python
猿说python
微信公众号 扫一扫关注
来源:https://www.cnblogs.com/shuopython/p/12437047.html