2.5.1 转义字符
price = 108
print("The book's price is %s" % price)
运行结果:
The book's price is 108
上面第二行代码中,print函数包括三个部分,第一部分是格式化字符串(它相当于字符串模版),该格式化字符串中包含一个“%s”占位符,它会被第三部分的变量或表达式的值代替;第二部分固定使用“%”作为分隔符。格式转化符中的“%s”被称为转换说明符。
python支持的转义字符
转义字符 | 说明 |
---|---|
\b | 退格符 |
\n | 换行符 |
\r | 回车符 |
\t | 制表符 |
\'' | 双引号 |
\' | 单引号 |
\\ | 反斜线 |
2.5.2 字符串格式化
python 提供了"%"对各种类型的数据进行格式化输出
转换说明符
转换说明符 | 说明 |
---|---|
d,i | 转换为带符号的十进制形式的整数 |
o | 转换为带符号的八进制形式的整数 |
x或X | 转换为带符号的十六进制形式的整数 |
e或E | 转换为科学计数法表示的浮点数 |
f,F | 转换为十进制形式的浮点数 |
g | 智能选择使用f或e格式 |
G | 智能选择使用F或E格式 |
C | 转换为单子符(只接受整数或单字符字符串) |
r | 使用repr()将变量或表达式转换为字符串 |
s | 使用str()将变量或表达式转换为字符串 |
当使用上面的转换说明符时,可指定转换后的最小宽度。
num = -28
print("num is: %6i" % num)
print("num is: %6d" % num)
print("num is: %6o" % num)
print("num is: %6x" % num)
print("num is: %6X" % num)
print("num is: %6s" % num)
运行结果
num is: -28
num is: -28
num is: -34
num is: -1c
num is: -1C
num is: -28
从上面的输出结果可以看出,此时指定了字符串的最小宽度为6,因此程序转换数值时总宽度为6,程序会自动在数值前补充了三个空格。
python允许在最小宽度之前添加一个标志来改变这种行为,如下(这三个标志可以同时存在):
- -:指定左对齐
- +:表示数值总要带着符号(正数带“+”,负数带“-”)
- 0:表示不补充空格,而是补充0
python 允许指定小数点后的数字位数;如果转换的是字符串,python允许指定转换后的字符串的最大字符数。这个标志被称为精度值,被放在最小宽度之后,中间用点(.)隔开。
my_value = 3.001415926535
# 最小宽度为8,小数点后保留3位
print("my_value is: %8.3f" % my_value)
# 最小宽度为8,小数点后保留3位,左边补0
print("my_value is: %08.3f" % my_value)
# 最小宽度为8,小数点后保留3位,左边补0,始终带符号
print("my_value is: %+08.3f" % my_value)
the_name = "Charlie"
# 只保留3个字符
print("the name is: %.3s" % the_name)
# 只保留2个字符,最小宽度为10
print("the name is: %10.2s" % the_name)
运行结果:
1 my_value is: 3.001
2 my_value is: 0003.001
3 my_value is: +003.001
4 the name is: Cha
5 the name is: Ch
2.5.3 序列相关方法
字符串本质上就是由多个字符组成的, 程序允许通过索引来操作字符
Python字符串直接在方括号[]中使用索引即可获得对应的字符:
- 第一个索引是0,第二个索引是1,如s[0],s[1]。
- 倒数第一个索引是-1,倒数第二个索引是-2, 如s[-1],s[-2].
通过方括号中使用范围来获取字符串的中间一段
- s[3:5] ---索引3到索引5(不包含)的子串
- s[3:-5] ---索引3到倒数第5个字符的字串
- s[-6,-3] ---从倒数第6字符到倒数第3个字符的字串。
允许省略起始索引或结束索引:
- s[5:] ---从索引5到结束
- s[-6:]---从倒数第6到结束
- s[:5]---从开始到索引5
- s[:-6]---从开始到倒数第6
in 运算符判断是否包含某个字串 print('very' in s)
len()函数获取字符串长度 print(len(s))
min()、max()函数获取字符串中的最小最大字符 print(max(s)),print(min(s))
2.5.4 大小写相关方法
dir():列出指定类或模版包含的全部内容, 如dir(str)
help():查看某个函数或方法的帮助文档
在str类中与大小写相关的常用方法如下:
title():将每个单词的首字母改为大写
lower():将整个字符串改为小写
upper(): 将整个字符串改为大写
a = 'our domain is crazyit.org'
# 每个单词首字母大写
print(a.title())
# 每个字母小写
print(a.lower())
# 每个字母大写
print(a.upper())
运行结果:
Our Domain Is Crazyit.Org
our domain is crazyit.org
OUR DOMAIN IS CRAZYIT.ORG
2.5.5 删除空白
strip():删除字符串前后的空白
lstrip():删除字符串前面(左边)的空白
rstrip():删除字符串后面(右边)的空白
2.5.6 查找、替换相关方法
startswith():判断字符串是否以指定字串开头
endswith():判断字符串是否以指定字串结尾
find():查找指定字串在字符串中出现的位置,如果没有找到,则返回-1
index():查找指定字串在字符串中出现的位置,如果没有找到,则引发ValueError错误
replace():使用指定字符串替换字符串中的目标字串
translate():使用指定的翻译映射表对字符串执行替换
2.5.7 分隔、连接方法
split():将字符串按指定分隔符分隔成多个短语
join(): 将多个短语连接成字符串
s = 'crazyit.org is a good site'
# 使用空白对字符串进行分割
print(s.split()) # 结果:['crazyit.org', 'is', 'a', 'good', 'site']
# 使用空白对字符串进行分割,最多只分割前两个单词
print(s.split(None, 2)) # 结果:['crazyit.org', 'is', 'a good site']
# 使用点进行分割
print(s.split('.')) # 结果:['crazyit', 'org is a good site']
my_list = s.split()
# 使用'/'作为分隔符,将my_list连接成字符串
print('/'.join(my_list)) # 结果:crazyit.org/is/a/good/site
# 使用'.'作为分隔符,将my_list连接成字符串
print('.'.join(my_list)) # 结果:crazyit.org.is.a.good.site