python基础-字符串和编码
久闻人生苦短我学python,python的被应用到很多领域,最近下定决心好好开始学Python,故此写下笔记记录一下自己的学习过程,也便于日后查漏补缺
字符串及编码
常用的三种编码
- ASCLL编码 :1个字节 (存在内存中的都是ASCLL编码,无法显示中文字符)
- Unicode编码: 两个字节 (全都是两个字符)
- UTF-8: 1-6个字节 英文字符都是用1个字节 中文字符就会有好几个字节 (如果文件英文字符比较多 这个编码比较好 节省空间)
Python中是以Unicode编码的
Python中获取字符的整数表示ord()
,chr()
可以把编码转换成字符
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
Python中对bytes类型的数据用b'ABC'
b前缀表示 ,encode()
方法可以指定编码格式
>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii') //中文不能指定ASCll编码,因为中文超过了ASCLL的编码范围
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
编码之后可以用decode()
方法解码,如果bytes
中只有一小部分无效的字节,可以传入errors='ignore'
忽略错误的字节
>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
'中'
计算字符串长度用len()
,如果需要计算字节长度,可以线转成bytes形式
>> len(b'ABC')
3
>>> len(b'\xe4\xb8\xad\xe6\x96\x87')
6
>>> len('中文'.encode('utf-8'))
6
通常在py文件开头加上,告诉解释器按照UTF-8进行编码
第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
格式化
%
占位符
Python中用%
来插入字符串的占位符,多个占位符后面参数要用括号括起来,常用的占位符有
- %d 整数
- 可以写成
2d%
,02d%
其中2表示替换的位置在第几位 写了0表示要补0 用来做编号的类似 01 02 03
- 可以写成
- %s 字符串
- 字符串总是生效,会将其他类型当成字符串
- %f 浮点型
- 浮点型可以写成
.2f
表示约几位小数
- 浮点型可以写成
- %x 十六进制
>>> print('hellow%010dworld'% 1 )
hellow0000000001world
>>> print('hellow%.3fworld'% 1.00000001 )
hellow1.000world
>>>
>>> print('hellow%sfworld%s'% (True,True))
hellowTruefworldTrue
format()
format()
是另一种格式化字符串的方法,用{0}
作为占位符,format写起来比%
麻烦但是好处在于可以随意调换位置 ,且也没有类型的限制
>>> 'hello {2:.2f} {0} {1} world '.format(' Coding Farmer ','occupied',3.1415926)
'hello 3.14 Coding Farmer occupied world '
作者:何其涛
原文链接:https://blog.csdn.net/deng1456694385/article/details/85140800
转载请注明:www.ainoob.cn » python基础-字符串和编码