使用print()函数很容易输出各种对象,但print()函数无法输出设计复杂的格式。Python提供了字符串格式化的方法来处理复杂格式的字符串。
%符号格式化字符串
- 字符串格式化涉及到两个概念:格式和格式化,其中格式以%开头,格式化运算符用%表示用对象代替格式串中的格式,最终得到1个字符串。
- 字符串格式化的一般形式如图所示:
常用格式字符%的含义
IN
name='Lily'
age=18
print('我叫%s,今年%d岁'%(name,age))
#一次转换多个对象,这些对象表示成一个元组形式,位置与格式化字符一一对应
OUT
我叫Lily,今年18岁
format()方法格式化字符串
format()方法是通过{}
和:
来代替传统%方式。一般形式如图所示:
format方法格式化时,可以使用位置参数,根据位置来传递参数;也可以通过索引值来引用位置参数,只要format方法相应位置上有参数值即可,参数索引从0开始;
IN
print('我叫{},今年{}岁'.format('张三',18))
print('我叫{0},今年{1}岁'.format('张三',18))
print('我叫{1},今年{0}岁'.format(18,'张三'))
OUT
我叫张三,今年18岁
我叫张三,今年18岁
我叫张三,今年18岁
f-string格式化字符
f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去,实例如下:
IN
name='张三'
age=18
print(f'我叫{name},今年{age}岁')
OUT
我叫张三,今年18岁
字符串截取
-
字符串的截取就是取出字符串中的子串。截取有两种方法:一种是索引
str[index]
取出单个字符;另一种是切片str[[start]:[end]:[step]]
取出一片字符。切片方式与列表部分介绍的一样。 -
字符串中字符的索引跟列表一样,可以双向索引。如图所示:
IN
s='student'
print(s[0])
print(s[-1])
print(s[1:3])#取出位置1到位置2的字符,不包括位置3的字符
print(s[:3])#取出从头到位置2的字符
print(s[-2:])#取出从倒数第2个位置开始的所有字符
print(s[:])#取出全部字符
print(s[::2])#步长为2
OUT
s
t
tu
stu
nt
student
suet
字符串处理:
IN
str1 = 'hello, world!'
# 通过内置函数len计算字符串的长度
print(len(str1)) # 13
# 获得字符串首字母大写的拷贝
print(str1.capitalize()) # Hello, world!
# 获得字符串每个单词首字母大写的拷贝
print(str1.title()) # Hello, World!
# 获得字符串变大写后的拷贝
print(str1.upper()) # HELLO, WORLD!
# 从字符串中查找子串所在位置
print(str1.find('or')) # 8
print(str1.find('shit')) # -1
# 与find类似但找不到子串时会引发异常
# print(str1.index('or'))
# print(str1.index('shit'))
# 检查字符串是否以指定的字符串开头
print(str1.startswith('He')) # False
print(str1.startswith('hel')) # True
# 检查字符串是否以指定的字符串结尾
print(str1.endswith('!')) # True
# 将字符串以指定的宽度居中并在两侧填充指定的字符
print(str1.center(50, '*'))
# 将字符串以指定的宽度靠右放置左侧填充指定的字符
print(str1.rjust(50, ' '))
str2 = 'abc123456'
# 检查字符串是否由数字构成
print(str2.isdigit()) # False
# 检查字符串是否以字母构成
print(str2.isalpha()) # False
# 检查字符串是否以数字和字母构成
print(str2.isalnum()) # True
str3 = ' jackfrued@126.com '
print(str3)
# 获得字符串修剪左右两侧空格之后的拷贝
print(str3.strip())
OUT
13
Hello, world!
Hello, World!
HELLO, WORLD!
8
-1
False
True
True
******************hello, world!*******************
hello, world!
False
False
True
jackfrued@126.com
jackfrued@126.com