祖玛电视剧,新乡医学院三全学院录取查询,亲前婚后txt下载
python学习—字符编码
例如汉字“中”
十进制:20013
二进制:01001110 00101101(unicode)/11100100 10111000 10101101(utf-8)
十六进制:u4e2d
八进制:
ascii
unicode
utf-8(可变长的unicode编码)
utf-8编码把一个unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。
字符 |
ascii |
unicode |
utf-8 |
a |
01000001 |
00000000 01000001 |
01000001 |
中 |
x |
01001110 00101101 |
11100100 10111000 10101101 |
计算机系统通用的字符编码工作方式
内存:统一unicode编码
硬盘、传输:转换为utf-8
浏览网页的时候,服务器会把动态生成的unicode内容转换为utf-8再传输到浏览器:
python的字符串
相关函数
'str'.encode(ascii/utf-8)返回bytes字符串
中文以ascii编码会报错
'bytes'.decode(ascii/utf-8)返回str字符串
bytes无法解码会报错,如果bytes中只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节
>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore') '中'
>>> len(b'abc') 3 >>> len(b'\xe4\xb8\xad\xe6\x96\x87') 6 >>> len('中文'.encode('utf-8')) 6
在最新的python 3版本中,字符串是以unicode编码的,也就是说,python的字符串支持多语言
python的字符串类型是str,如果要在网络上传输,或者保存到磁盘上,就需要把str变为bytes。
>>为了避免乱码问题,应当始终坚持使用utf-8编码对str和bytes进行转换<<
str和bytes的区别
>>> 'abc'.encode('ascii') b'abc' >>> '中文'.encode('utf-8') b'\xe4\xb8\xad\xe6\x96\x87'
在bytes中,无法显示为ascii字符的字节,用\x##显示。
.py文件中含中文要用utf-8编码
#!/usr/bin/env python3 # -*- coding: utf-8 -*-
第一行注释是为了告诉linux/os x系统,这是一个python可执行程序,windows系统会忽略这个注释;
第二行注释是为了告诉python解释器,按照utf-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
>>编辑器用utf-8 without bom<<
字符串格式化问题
>>> 'hello, %s' % 'world' 'hello, world' >>> 'hi, %s, you have $%d.' % ('michael', 1000000) 'hi, michael, you have $1000000.'
%运算符
>>> 'growth rate: %d %%' % 7 'growth rate: 7 %'
占位符 |
替换内容 |
%d |
整数 |
%f |
浮点数 |
%s |
字符串 |
%x |
十六进制整数 |
format()
另一种格式化字符串的方法是使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}……,不过这种方式写起来比%要麻烦得多:
>>> 'hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125) 'hello, 小明, 成绩提升了 17.1%'
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python 实现将numpy中的nan和inf,nan替换成对应的均值
python爬虫把url链接编码成gbk2312格式过程解析
网友评论