20180713学习日报-encode/decode、读文件,写文件、isinstance()、chardet、urllib使用介绍

1.encode/decode
python3中encode和decode的一些基本用法
p在python3中: 
encode(编码):按照某种规则将“文本”转换为“字节流”。 python 3中表示:unicode变成str
decode(解码):将“字节流”按照某种规则转换成“文本”。 python3中表示:str变成unicode

字符串在Python内部的表示是Unicode编码,因此在做编码转换时,通常需要以Unicode作为中间编码,即先将其他编码的字符串解码(decode)成Unicode,再从Unicode编码(encode)成另一种编码。

u代表Unicode类型,s代表str类型
u.encode(‘…’):只要你填写了正确的编码,基本上总是能成功的。就像任何文件都可以压缩成zip文件。
u.decode(‘…’):没有任何意义,因为decode是将str转为unicode编码,而u本身就是unicode编码的。
s.encode(‘…’):在python 3中,将产生一个编码后的byte类型的字符串(这里有点像Python 2.x中的str),byte类型的字符串是支持解码操作的。
s.decode(‘…’):运行都会出错。因为python 3中的str类型对象有点像Python 2中的unicode, 而decode是将str转为unicode编码,所以str仅有一个encode方法,调用这个方法后将产生一个编码后的byte类型的字符。

举例:
编码:

“中国”.encode(“GBK”)
b’\xd6\xd0\xb9\xfa’
“中国”.encode(“UTF-8”)
b’\xe4\xb8\xad\xe5\x9b\xbd’

解码:

“中国”.decode(“GBK”)
Traceback (most recent call last):
File “”, line 1, in
AttributeError: ‘str’ object has no attribute ‘decode’

b’\xd6\xd0\xb9\xfa’.decode(“GBK”)
‘中国’
b’\xe4\xb8\xad\xe5\x9b\xbd’.decode(“UTF-8”)
‘中国’

先解码再编码:

b’\xd6\xd0\xb9\xfa’.decode(“GBK”).encode(“UTF-8”)
b’\xe4\xb8\xad\xe5\x9b\xbd’

b’\xd6\xd0\xb9\xfa’.decode(“GBK”).encode(“GBK”)
b’\xd6\xd0\xb9\xfa’

2.读文件,写文件

*_coding:UTF-8_*

fp1 = open(‘c:\Users\admin\Desktop\颜金凤\testfile.txt’,’r’) #手工创建文件为ANSI编码保存(gbk)
info1 = fp1.read()
print(info1)
print(type(info1))

fp2 = open(‘c:\Users\admin\Desktop\颜金凤\testfile.txt’,’w’)
info2 = “abcjjkdjkikjj天气炎热”
fp2.write(info2)
fp2.close()

执行结果:
颜金凤bakkcjoooljkjklllkkkllkjnnkkkmnmnnallkkk

猜你喜欢

转载自blog.csdn.net/yan_jin_feng/article/details/82596708