了解python中bytes,str和unicode的区别
发布网友
发布时间:2022-04-23 13:32
我来回答
共2个回答
热心网友
时间:2022-04-06 15:25
首先来说把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
热心网友
时间:2022-04-06 16:43
str是经过编好码的字符串,如unicode,gb2312,ascii编码,可以表示不同语言中的字符,可以解码成byte byte是字节,只能是ascii码0-255的字符,表示未经编码处理的原始字符串