1.4.7字节串(bytes)
字节串(bytes)由多个字节组成,以字节为单位进行操作。bytes 也是不可变序列。
bytes 对象只负责以宇节(二进制格式)序列来记录数据,至于这些数据到底表示什么内容,完全由程序决定。
如果希望将一个字符串转换成bytes 对象, 有如下三种方式。
1〉如果字符串内容都是ASCII 字符,则可以通过直接在字符串之前添加b 来构建字节串值。
2〉调用bytes()函数(其实是bytes 的构造方法)将字符串按指定字符集转换成字节串,如果不指定字符集,默认使用UTF - 8 字符集。
3〉调用字符串本身的encode()方法将字符串按指定宇符集转换成字节串,如果不指定字符集,默认使用UTF- 8 字符集。
如果程序获得了bytes 对象,也可调用bytes 对象的decode()方法将其解码成字符串
1.5深入使用字符串
1.5.1转移字符
字符串中可以使用反斜线进行转义;如果字符串本身包含反斜线,则需要使用“\\”表示,“\\”就是转义字符。Python支持的转移字符表如下:
转义字符 | 说明 |
---|---|
\b | 退格符 |
\n | 换行符 |
\r | 回车符 |
\t | 制表符 |
\’’ | 双引号 |
\’ | 单引号 |
\\ | 反斜线 |
1.5.2字符串格式化
Python 提供了“%”对各种类型的数据进行格式化输出
print 函数包含三个部分:
第一部分是格式化字符串(它相当于字符串模板),该格式化字符串中包含一个“ %s ”占位符,它会被第三部分的变量或表达式的值代替;
第二部分固定使用“%”作为分隔符。
第三部分的变量或表达式的值。如果果格式化字符串中包含多个“ %s ”占位符,第三部分也应该对应地提供多个变量。
Python提供了表1.2所示的转换说明符
表1.2所示的转换说明符
转换说明符 | 说明 |
---|---|
d,i | 转换为带符号的十进制形式的整数 |
o | 转换为带符号的八进制形式的整数 |
x ,X | 转换为带符号的十六进制形式的整数 |
e | 转换为科学计数法表示的浮点数(e小写) |
E | 转换为科学计数法表示的浮点数(E大写) |
f,F | 转换为十进制的浮点数 |
g | 智能选择使用f或e格式 |
G | 智能选择使用F或E格式 |
C | 转换为单字符(只接受整数或单字符字符串) |
r | 使用repr()将变量或表达式转换为字符串 |
s | 使用str()将变量或表达式转换为字符串 |
当使用上面的转换说明符时可指定转换后的最小宽度。代码示例如下:
num = -28
print ( "num is : %6i", % num)
输出结果如下:
num is : -28
在默认情况下, 转换出来的字符串总是右对齐的, 不够宽度时左边补充空格。Python 也允许在最小宽度之前添加一个标志来改变这种行为, Python 支持如下标志。
-: 指定左对齐。
+: 表示数值总要带着符号(正数带“+” ,负数带" -")。
0:表示不补充空格, 而是补充0 。
对于转换浮点数, Python 还允许指定小数点后的数字位数:如果转换的是字符串, Python 允许指定转换后的字符串的最大字符数。这个标志被称为精度值,该精度值被放在最小宽度之后,中间用点()隔开。
my_value = 3.001415926535
print("my_value is : %+08.3f" % my_value)
#最小宽度为8 , 小数点后保留3位, 左边补0 ,始终带符号
the_name ="Charlie"
#只保留2 个字符,最小宽度为10
print('the_name is : %10.2s' % the_name)
输出结果:
my_value is : +003.001
the_name is : Ch
1.5.3 序列相关方法
字符串本质上就是由多个字符组成的,因此程序允许通过索引来操作字符。Python 字符串直接在方括号( [])中使用索引即可获取对应的字符, 字符串中第一个字符的索引为0 、第二个字符的索引为1,后面各字符依此类推。此外, Python 也允许从后面开始计算索引,最后一个字符的索引为-1,倒数第二个字符的索引为-2······依此类推。
s = 'crazyit.org is very good '
#输出前五个字符,输出字符的下标到4
print(s[0:5])
输出结果:
crazy
Python 字符串还支持用in 运算符判断是否包含某个子串。例如如下代码。
print ( 'very ' in s)#输出结果True
如果要获取字符串的长度,则可调用Python 内置的len()函数。例如如下代码。
print(len(s))#输出结果25
还可使用全局内置的min()和max()函数获取字符串中最小字符和最大字符。例如如下代码。`
print(max(s)) # z
#输出s 字符串中的最小字符
print(min (s)) #空格