实际案例:
- 某文本编码格式已知(如UTF-8,GBK,BIG5),在python2和python3中分别如何读取该文件?
首先,字符串的语义发生了变化
python2 | python3 |
---|---|
str | bytes |
unicode | str |
解决方案:
- python2.x :写入文件前对unicode编码,读入文件后对二进制字符串编码.
- python3.x :open函数指定't'的文本模式,encoding指定编码格式.
Python2中的文本读写
f = open('py2.txt','w')
s = u'你好'
f.write(s.encode('gbk'))
f.close()
f = open('py2.txt','r')
t = f.read() => '\xc4\xe3\xba\xc3'
t.decode('gbk') => u'\u4f60\u5977d'
print t.decode('gbk') => 你好
Python3中的文本读写
f = open('py3.txt','wt',encoding='utf8')
f.write('你好,我爱编程.')
f.close()
f = open('py3.txt','rt',encoding='utf8')
s = f.read()
print(s)
网友评论