python2和python3编码区别
来源:互联网 发布:编写高质量c语言代码 编辑:程序博客网 时间:2024/05/22 04:36
在python2中主要有str和unicode两种字符串类型,而到python3中改为了bytes和str,并且一个很重要的分别是,在python2中如果字符串是ascii码的话,str和unicode是可以直接进行连接和比较,但是到python3中就不行了,bytes和str是两个独立的类型。另一个重要的是python2中不管是str还是unicode都可以直接写入文件,而不需要加上它是不是str的类型写入方式,但是在python3中如果是写或者读bytes类型就必需带上’b’.
python2类型转换代码如下:
import osdef to_unicode(unicode_or_str): ''' 将str字符串转换为unicode类型 ''' if isinstance(unicode_or_str, str): value = unicode_or_str.decode('utf-8') else: value = unicode_or_str return valuedef to_str(unicode_or_str): ''' 将unicode字符串转换为str类型 ''' if isinstance(unicode_or_str, unicode): value = unicode_or_str.encode('utf-8') else: value = unicode_or_str return value # Instance of bytes
python3:
import osdef to_str(bytes_or_str): if isinstance(bytes_or_str, bytes): value = bytes_or_str.decode('utf-8') else: value = bytes_or_str return value # Instance of strdef to_bytes(bytes_or_str): if isinstance(bytes_or_str, str): value = bytes_or_str.encode('utf-8') else: value = bytes_or_str return value # Instance of bytes
在python3中直接连接bytes和str类型报错:
print(to_str("test")+to_bytes('test'))
*Traceback (most recent call last):
File “E:\working\project\effective_python\chapter1\bytes_str_unicode.py”, line 22, in
print(to_str(“test”)+to_bytes(‘test’))
TypeError: Can’t convert ‘bytes’ object to str implicitly*
不带’b’写入bytes类型字符串也会报错
with open("C:/tmp.txt", 'w') as f: f.write(os.urandom(10))
Traceback (most recent call last):
File “E:\working\project\effective_python\chapter1\bytes_str_unicode.py”, line 27, in
f.write(os.urandom(10))
TypeError: must be str, not bytes
而这些问题在python2中不会出现。
参考书籍
- python2和python3编码区别
- python2和python3编码区别
- Python2 和Python3 区别
- python2和python3区别
- Python2和Python3区别
- python2和python3区别
- python3和python2的区别
- python3和python2的区别
- python2和python3的区别
- python2 和Python3的区别
- python2和python3的区别
- python2和python3的区别
- Python2和Python3的区别
- python2和python3主要区别
- python2和python3的区别
- Python2和Python3的区别
- python2和python3的区别
- python2和python3的区别
- 计算机视觉、机器学习相关领域论文和源代码大集合
- php rsa加密解密实例
- OpenMP的环境变量
- 15第五周项目四——静态成员应用
- 编译处理过程
- python2和python3编码区别
- 第5周项目2-对象成员作为数据成员
- 题目:统计字符次数
- 第五周项目二对象作为数据成员
- 2015年大一下第4周项目2-对象作为数据成员
- 第五周阅读程序6:静态变量
- JAVA多线程 <一>两种开启方式
- 第五周 项目二 对象作为数据成员
- SQL语句性能调整一例