Python字符串
Python字符串
-
str 转换bytes
纯英文的
str
可以用ASCII
编码为bytes
,内容是一样的,
含有中文的str
可以用UTF-8
编码为bytes
。
含有中文的str
无法用ASCII
编码,因为中文编码的范围超过了ASCII
编码的范围,Python会报错。在
bytes
中,无法显示为ASCII字符的字节,用\x##
显示。
'ABC'.encode('ascii') |
-
bytes转换str
把
bytes
变为str
,就需要用decode()
方法:
b'ABC'.decode('ascii') |
-
计算str包含的字符串/bytes包含的字节数
1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。
#str包含的字符串 |
-
文件乱码问题
在操作字符串时,我们经常遇到
str
和bytes
的互相转换。为了避免乱码问题,应当始终坚持使用UTF-8编码对str
和bytes
进行转换。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python3 |
第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。
- 字符串格式化方法
- 占位符格式化
不太确定应该用什么,%s
永远起作用,它会把任何数据类型转换为字符串:
占位符 | 替换内容 |
---|---|
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
-
fromat()
另一种格式化字符串的方法是使用字符串的
format()
方法,它会用传入的参数依次替换字符串内的占位符{0}
、{1}
……,不过这种方式写起来比%要麻烦得多:
'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125) |
-
f-string
最后一种格式化字符串的方法是使用以
f
开头的字符串,称之为f-string
,它和普通字符串不同之处在于,字符串如果包含{xxx}
,就会以对应的变量替换:
2.5 r = |