05 Python 字符串和编码

1 字符编码

ASCII:1个字节
Unicode:通常为2个字节
UTF-8:常用英文字母1个字节,汉字通常3个字节

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者传输时,转换为UTF-8编码。
例如:

  • 用记事本编辑的时候,从文件读取的UTF-8字符就被转换成Unicode字符到内存中,编辑完成后,保存时会把Unicode转换为UTF-8保存到硬盘中。
  • 浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器中显示。

2 Python字符串

  • 对于单个字符,ord()函数可以获取字符的整数表示,chr()函数把编码转换成对应的字符。
  • 如果在网络上传输或把数据保存在硬盘上,需要把字符串转换成一字节为单位的bytes,bytes每个字符只占用一个字节。
x=b'abc'  // bytes类型的数据用b作为前缀
  • 以Unicode表示的字符串通过encode()函数可以直接编码为只等的bytes。含有中文的字符串无法用ASCII编码,因为中文编码的范围超过了ASCII的范围,会报错。
'abc'.encode('ascii')
'你好'.encode('utf-8')
  • 我们从网络上或硬盘上读取了字节流,则读到的数据就是bytes。要把bytes变为字符串,就要用到decode()函数。如果bytes中包含无法解码的字节,decode()函数会报错。
b'abc'.decode('ascii')
b'efg'.decode('utf-8')
decode('utf-8',errors='ignore') // 如果bytes中有一小部分无效,则可使用此方法忽略错误的字节。
  • 计算字符串中含有的字节数,使用len()函数。
len(b'abc')  // 3
len('你好'.encode('utf-8')) // 6
  • 当Python解释器读取源代码时,为了让它按照UTF-8编码读取,通常在文件开头添加两行话
#!/usr/bin/env python3  // 告诉系统这是一个Python可执行程序
# -*_ coding: utf-8 -*- // 告诉Python解释器,按照utf-8编码读取源代码

3 格式化

如何输出格式化的字符串

占位符替换内容
%d整数
%f浮点数
%s字符串
%x十六进制整数
>>> 'hello, %s' %'world'
'hello, world'
>>> 'hello, %s, welcome to %s' %('李四','北京')
'hello, 李四, welcome to 北京'
>>> 'you have %d money' %10000
'you have 10000 money'


>>> '%2d-%02d' %(3,1)  // 指定补零
' 3-01'
>>> '%05d' %4   
'00004'
>>> '%5d' %5   // 占了5个位置
'    5'

>>> '%.2f' %3.1415926   // 指定小数位数
'3.14'

注意:

  • 如果不确定用什么匹配,则可以用%s,会把任何数据类型转换为字符串。
  • %%表示一个%
  • format()函数,使用传入参数替换字符串内的占位符{0},{1}…….
>>> 'hello,{0}, 成绩提升了{1:.1f}%'.format('李四',15.155)
'hello,李四, 成绩提升了15.2%'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值