Python - 2 - 字符串(str)、bytes、字符编码 及 字符串格式化

字符编码

str:‘ABC’
bytes:b’ABC’,在字符串前加b即为bytes类型。
str可以包含英文、中文等字符,bytes只能直接包含中文,如需包含中文,要以中文的Unicode码格式,如"中"字的bytesb’\xe4\xb8\xad’
str类型数据在内存中是以Unicode编码格式表示的,由于Unicode比较占存储空间(例如字符A的Unicode编码为00000000 01000001,一个字符对应n个字节),所以在实际存储或传输时,就需要转成bytes类型(一个字符对应1个字节)。

常用的与字符编码相关的函数如下:

函数说明实例
ord获取字符的整数表示

>>> ord(‘A’)
65
>>> ord(‘方’)
26041

chr将编码转换成字符

>>> chr(65)
‘A’
>>> chr(20013)
‘中’

encode将str编码为指定的bytes:
纯英文str可以编码成ascii、utf-8,
含中文的str只能编码成utf-8

>>> s=‘ABC’
>>> S=‘中文’
>>> s.encode(‘ascii’)
b’ABC’
>>> s.encode(‘utf-8’)
b’ABC’
>>> S.encode(‘ascii’)
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-1: ordinal not in range(128)
>>> S.encode(‘utf-8’)
b’\xe4\xb8\xad\xe6\x96\x87’

decode将bytes按指定的编码转换为str:
纯英文bytes可以转成ascii、utf-8的str,
含中文的bytes只能转成utf-8,因为ascii编码不包含中文

>>> b
b’ABC’
>>> b.decode(‘ascii’)
‘ABC’
>>> b.decode(‘utf-8’)
‘ABC’
>>> b=b’\xe4\xb8\xad\xe6\x96\x87’
>>> b.decode(‘ascii’)
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe4 in position 0: ordinal not in range(128)
>>> b.decode(‘utf-8’)
‘中文’

len计算str的字符数,或者bytes的字节数

>>> len(‘ABC’)
3
>>> len(‘中文’)
2
>>> len(b’AA’)
2
>>> len(b’\xe4\xb8\xad\xe6\x96\x87’)
6

格式化

%

Python和C语言一样,使用%运算符来格式化字符串,格式为:“Hello, %s% “Python”,在字符串中使用%s占位符,字符串后面跟上% “Python”表示用“Python”替换字符串中%s。常用占位符有:

占位符替换内容
%d整数
%s字符串
%f浮点数
%x十六进制整数

占位符和%后面的变量或值的个数要一致,当只有一个占位符时,在%后直接加上变量或值,当有多个占位符时,变量或值要用()括起来,用,分隔。

>>> "Hello, %s" % "Python"
'Hello, Python'
>>> "Hello, %s, %d" % ("Python", 2020)
'Hello, Python, 2020'
>>> "Hello, %s %d" % ("Python", year)	# year是一个变量
'Hello, Python 2020'

此外,还可以指定整数或小数的位数,也是和C语言一样:

>>> "%02d" % 18		# %02d表示以整数显示,位数为2,不足2位则在前面补0
'18'
>>> "%04d" % 18
'0018'
>>> "%f" % 10.1		# %f默认只保留6位小数
'10.100000'
>>> "%.2f" % 10.1	# %.2f表示小数点后保留2位
'10.10'

format

字符串中使用{0}{1}…等占位符,字符串后面跟.format()()中是变量或值,第一个变量或值对应{0},第2个对应{1}

>>> "{0}, {1}°C".format('Beijing', 2)
'Beijing, 2°C'
>>> "{0}, {1:.1f}°C".format('Beijing', 2)	# 占位符中数字后可以加上格式化参数
'Beijing, 2.0°C'

f-string

字符串中使用到变量时,可用f-string,格式形如f’xxx {name}’,即在字符串前加f,字符串中用{}把变量名括起来,{name}就会被变量的值替换:

>>> f"{a}"
'中'
>>> f"Beijing  {temp}°C"
'Beijing  2°C'
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值