Python基础教程之字符串和编码

简介: Python基础教程之字符串和编码

1. 字符编码

由于计算机只能处理数字,如果要处理文本就必须将文本转换为数字才能处理,最早设计的时候采用8b 表示一个字节,一个字节能够表示的最大整数是255,如果要表示更大的整数,就必须用多个字节。另外由于计算机是美国人发明的,所以计算机早期只有127个字符被编码到计算机了,也就是Ascii码,后来要处理中文中国就指定了GB2312 ,但是其他国家也有自己的语言 然后就有了不同的标准, 所以就有组织将所有的统一成 Unicode编码

2. python字符串

在python 中字符串支持多语言,python 提供了 ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符,如下:

>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'

由于python字符串类型是str,在内存中以 unicode表示,一个字符对应若干字节,如果需要在网上传输,或者保存磁盘,就需要把str变为以字节为单位的bytes

python 对 bytes 类型的数据用 带b前缀的单引号和双引号表示,如下:

x = b 'ABC'
'ABC' 和 b'ABC' // 前者是 str 后者是表示字节

在python 中 unicode 表示的str 通过 encode() 方法可以编码为指定的bytes,例如:

>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
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)
// 纯英文的str 可以用 ASCII编码为 bytes,含有中文的可以用UTF-8编码为bytes,在bytes中无法显示的ASCII字符的字节,用\x##显示

反之,我们需要读取字节流,可以通过decode()方法,将bytes 转换为str,如果bytes中包含无法解码的字节,decode()会报错。

>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
>>> b'\xe4\xb8\xad\xff'.decode('utf-8')
Traceback (most recent call last):
  ...
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte

len() 函数是用来计算str 的字符数,如果换成bytes, 就计算字节数

在操作字符串时,我们经常遇到str和bytes的互相转换。为了避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行转换。

3. 格式化

在python 中采用和 c语言一样的格式化方式,用%来实现,如下:

>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
占位符 替换内容
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数

4. format()

通过format方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}等。写法比%麻烦。如下:

>>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
'Hello, 小明, 成绩提升了 17.1%'
相关文章
|
17天前
|
Python
1167: 分离字符串(PYTHON)
1167: 分离字符串(PYTHON)
|
1月前
|
JSON C语言 C++
【Python 基础教程 26】Python3标准库全面入门教程:一步步带你深入理解与应用
【Python 基础教程 26】Python3标准库全面入门教程:一步步带你深入理解与应用
63 1
|
1天前
|
Python
Python 字符串格式化指南
本文介绍了Python中的三种字符串格式化方法:1) 使用 `%` 操作符,如 `%s` 和 `%d`;2) `str.format()` 方法,通过 `{}` 占位符插入变量;3) Python 3.6 引入的 f-strings,直接在字符串内嵌入变量。此外,还提到了高级用法,如格式控制(如指定小数位数)。这些方法有助于更有效地处理和格式化字符串输出。
3 0
|
8天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
49 0
|
10天前
|
数据采集 Python
python学习9-字符串
python学习9-字符串
|
17天前
|
Java 索引 Python
Python标准数据类型-字符串常用方法(下)
Python标准数据类型-字符串常用方法(下)
21 1
|
17天前
|
XML 编解码 数据格式
Python标准数据类型-String(字符串)
Python标准数据类型-String(字符串)
23 2
|
17天前
|
Python
171: 字符串的倒序(python)
171: 字符串的倒序(python)
|
1月前
|
存储 算法 数据挖掘
【Python 基础教程 25】全面入门指南:深度解析Python3的命名空间,作用域及变量使用教程
【Python 基础教程 25】全面入门指南:深度解析Python3的命名空间,作用域及变量使用教程
55 0
|
1月前
|
存储 机器学习/深度学习 数据安全/隐私保护
【Python 基础教程 24】全面入门Python面向对象编程:深度探索与实战教程
【Python 基础教程 24】全面入门Python面向对象编程:深度探索与实战教程
79 0

热门文章

最新文章