了解python中bytes,str和unicode的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解python中bytes,str和unicode的区别相关的知识,希望对你有一定的参考价值。

首先来说把Unicode转换为为原始8位值(二进制数据),有很多种办
编写Python程序的时候,核心部分应该用Unicode来写,也就是python3中的str,python2中的unicode
python3中2种表示字符序列的类型:bytes和str
前者的实例包含了原始8位值,后者的实例包含了Unicode字符
python3中接受bytes和str,并总是返回str:
def to_str(bytes_or_str):
if isinstance(bytes_or_str, bytes):
return bytes_or_str.decode('utf-8')
return bytes_or_str1234

python3中接受bytes和str,并总是返回bytes:
def to_bytes(bytes_or_str):
if isinstance(bytes_or_str, str):
return bytes_or_str.encode('utf-8')
return bytes_or_str1234

python2中2种表示字符序列的类型:unicode和str
与python3刚好相反:后者的实例包含了原始8位值,前者的实例包含了Unicode字符
python2中接受unicode和str,并总是返回unicode:
def to_str(bytes_or_str):
if isinstance(bytes_or_str, str):
return bytes_or_str.decode('utf-8')
return bytes_or_str1234

python2中接受unicode和str,并总是返回str:
def to_bytes(bytes_or_str):
if isinstance(bytes_or_str, unicode):
return bytes_or_str.encode('utf-8')
return bytes_or_str1234

python2和python3需要注意的事情
1.python2中如果str只包含7位的ASCII字符,那么unicode和str 就是同一种类型,可以+操作
2.python3内置的open函数获取文件句柄,默认采用utf-8的格式操作文件,python2则默认是二进制
python2 的写法:
with open("/temp/file.bin",'w')as f :
f.write(os.urandom(10))12

python3 的写法:
with open("/temp/file.bin",'wb')as f :
f.write(os.urandom(10))12

ps:如何让你的代码pythonic
参考技术A str是经过编好码的字符串,如unicode,gb2312,ascii编码,可以表示不同语言中的字符,可以解码成byte byte是字节,只能是ascii码0-255的字符,表示未经编码处理的原始字符串

Python bytes与str

bytes与str概念

bytes是一种比特流,以0101这种形式存在,它是计算机能够读懂的格式,str是unicode的呈现形式。

Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分。文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流的函数(反之亦然)。

str 与 bytes转换

name = '阿林'
print(name)
print(name.encode())  #执行结果:b'\\xe9\\x98\\xbf\\xe6\\x9e\\x97'


name_1 = b'\\xe9\\x98\\xbf\\xe6\\x9e\\x97'
print(name_1.decode())   #执行结果:阿林

以上是关于了解python中bytes,str和unicode的区别的主要内容,如果未能解决你的问题,请参考以下文章

了解bytesstr与unicode的区别

Python str / bytes / unicode 区别详解

Python 了解 bytes 与 str 的区别

python3 中bytes与str类型

python3字符串编码总结-str(unicode)_bytes

python中unicode 和 str相互转化