目录
1.字符串索引与切片
(1)字符串索引
(2)字符串切片
2.Python字符串的方法
3.Python字符串拆分方法
4.Python字符串的替换
5.Python字符串的修饰
6.Python字符串的格式化
(1)format()
按索引传递参数
按关键字传递参数
填充与格式化
精度与进制
精度
进制
(2)百分号方式的格式化
7.Python字符串变形
8.Python字符串的判断
9.Python字符串编码与解码
encode():编码
decode():解码
注意不要越界
格式:[起始位置,结束位置,步长] 左闭右开
len()函数:查看字符串内容的长度
反向截取,从右往左
s = 'hello world'
print(s[0]) # h
print(s[::]) # hello world
print(len(s)) # 11
print(s[-3:-1:1]) # rl
print(s[-1:-4:-1]) # dlr
print(s[-1:-5:-1]) # dlro
print(s[-1::-1]) # dlrow olleh
print(s[::-1]) # dlrow olleh
print(s[-1:-3:1]) # 什么都没有
count() | 统计字符串出现的次数 |
find() | 返回字符串的索引位置,找不到返回:-1 |
rfind() | 从右往左找<-------------字符串 从左往右数-------------->索引 |
index() | 返回字符串的索引位置,找不到会报错 |
rindex() | 从右往左找<------------字符串 从左往右数------------->索引 找不到会报错 |
s = 'hello world python'
print(s.count('h')) # 2
print(s.find('h')) # 0
print(s.find('a')) # -1
print(s.rfind('o')) # 16
print(s.rfind('0')) # -1
print(s.index('ll')) # 2
print(s.index('w')) # 6
print(s.rindex('ws')) # 报错
print(s.rindex('l')) # 9
partition() | mystr按str分为三部分,str前,str本身,str后 | 返回一个元组类型 |
splitlines() | 按行拆分 Keepends=False 默认为False, 不显示换行符 Keepeds=True 显示换行符 |
返回一个列表类型 |
split() | 按指定内容拆分,不包含指定内容 | 返回一个列表类型 |
s = 'hello world python'
print(s.partition('world')) # 返回一个元组:('hello ', 'world', ' python')
s = 'hello\nworld\npython'
print(s.splitlines()) # 返回一个列表:['hello', 'world', 'python']
print(s.splitlines(keepends=True)) # 返回一个列表:['hello\n', 'world\n', 'python']
s = 'hello world python'
print(s.split(' ')) # 返回一个列表:['hello', 'world', 'python']
print(s.split('o')) # 返回一个列表:['hell', ' w', 'rld pyth', 'n']
replace() | 从左往右替换指定元素,可以指定替换的个数,默认全部替换 第二个参数可以直接指定替换的个数 |
translate() | 写对应关系 一一对应,一一替换,替换的字符串长度必须相同 |
s = 'hello world python'
print(s.replace('o', '0')) # 把所有的'o'都替换成'0' hell0 w0rld pyth0n
print(s.replace('o', '0', 2)) # 把前两个'o'替换成'0' hell0 w0rld python
s = 'hello world!'
intab = 'world!'
outtab = 'python'
ret = str.maketrans(intab, outtab)
print(s.translate(ret)) # hehhy python
center() | 让内容居中显示,其他地方默认用空格填充 |
rjust() | 其他地方可以用指定内容填充,由第二个参数表示指定内容 |
ljust() | 左对齐 |
zfull() | 右对齐,其他地方用0填充 |
strip() | 默认去除两边的空格,也可以去除指定的内容 |
rstrip() | 默认去除右边的空格,也可以去除指定的内容 |
lstrip() | 默认去除左边的空格,也可以去除指定的内容 |
s = 'hello'
print(s.center(10)) # hello
print(s.center(10, '*')) # **hello***
print(s.rjust(10)) # hello
print(s.rjust(10, '!')) # !!!!!hello
print(s.ljust(10)) # hello
print(s.ljust(10, '@')) # hello@@@@@
print(s.zfill(10)) # 00000hello
按位置传递参数,必须一一对应
name = 'zs'
age = 10
msg = '大家好,我叫{},今年年龄{}'.format(name, age)
print(msg) # 大家好,我叫zs,今年年龄10
msg = '大家好,我叫{},我叫{},我叫{},今年年龄{}'.format(name, name, name, age)
print(msg)
msg = '大家好,我叫{},我叫{},我叫{},今年年龄{}'.format(name, name, name, age)
print(msg)
msg = '大家好,我叫{0},我叫{0},我叫{0},今年年龄{1}'
print(msg.format(name, age)) # 大家好,我叫zs,我叫zs,我叫zs,今年年龄10
name = 'zs'
age = 10
msg = '大家好,我叫{name},今年年龄{age}'.format(name='李四', age=20)
print(msg) # 大家好,我叫李四,今年年龄20
msg = '大家好,我叫{name},今年年龄{age}'
print(msg.format(name='王麻子', age=50)) # 大家好,我叫王麻子,今年年龄50
print(msg.format(age=32, name='张三')) # 大家好,我叫张三,今年年龄32
格式 :[填充内容][对齐方式][宽度]
name = 'zs'
age = 20
height = 2
msg = '大家好,我叫{:@^10},年龄{:*<10},身高{:!>10}'
print(msg.format(name, age, height))
# 大家好,我叫@@@@zs@@@@,年龄20********,身高!!!!!!!!!2
{:.2f} 精确到小数点后第二位
long = 5 / 3
wide = 9 / 8
area = long * wide
msg = '长方形的长是{:2f},宽是{:3f},面积是{:2f}'.format(long, wide, area)
print(msg)
# 长方形的长是1.666667,宽是1.125000,面积是1.875000
二进制: :b
八进制: :o
十六进制: :x
print('二进制{:b}'.format(3)) # 11
print('八进制{:o}'.format(10)) # 12
print('十六进制{:x}'.format(10)) # a
接收字符串 | %s |
接收int | %d |
% | %% |
接收小数 | %f %.2f |
name = 'zs'
age = 20
long = 5 / 3
msg = '大家好,我叫%s,年龄%d,学习pytohn进度10%%' % (name, age)
print(msg) # 大家好,我叫zs,年龄20,学习pytohn进度10%
msg = '长方形的长是%.2f' % long
print(msg) # 长方形的长是1.67
upper() | 把字符串转换为大写 |
lower() | 把字符串转换为小写 |
swapcase() | 把字符串里面的大写转换成小写,小写转换大写 |
title() | 把字符串的每一个单词的首字母转换成大写 |
capitalize() | 整个字符串只有首字母是大写,其余都是小写 |
expandtabs() | 默认横向制表符 \t 占8个空格 可以用 tabsize 来改变 \t占得位置大小 当\t前面的字符超过tabsize,则从tabsize+1开始数: tabsize-前面的字符=空格的个数 |
s = 'hello world Python'
print(s.upper()) # HELLO WORLD PYTHON
print(s.lower()) # hello world python
print(s.swapcase()) # HELLO WORLD pYTHON
print(s.title()) # Hello World Python
print(s.capitalize()) # Hello world python
s = '\tabc'
print(s.expandtabs()) # abc
s = 'abmsdeewidsa\tabcv'
print(s.expandtabs()) # abmsdeewidsa abcv
print(s.expandtabs(tabsize=4)) # abmsdeewidsa abcv
isalnum() | 判断字符串是否完全由字母和数字组成 |
isalpha() | 判断字符串是否完全由字母组成 |
isdigit() | 判断字符串是否完全由数字组成 |
isspace() | 判断字符串是否完全由空格组成 |
isupper() | 判断字符串是否完全是大写 |
islower() | 判断字符串是否完全是小写 |
istitle() | 判断字符串的每一个单词的第一个字母是否都是大写 |
startwith() | 判断字符串开头的字符,也可以截取判断,指定范围 左闭右开 |
endwith() | 判断字符串结尾的字符,也可以截取判断,指定范围 左闭右开 |
s = 'sadahjADS2342GF435433jhGHJ__+&^$'
print(s.isalnum()) # False
print(s.isalpha()) # False
print(s.isdigit()) # False
print(s.isspace()) # False
print(s.isupper()) # False
print(s.islower()) # False
print(s.istitle()) # False
s = 'hello world'
print(s.startswith('h')) # True
print(s.startswith('h', 2, 5)) # False
print(s.endswith('ld')) # True
print(s.endswith('ld', 3, 6)) # False
注意:编码表和解码表必须相同
s = '我'
ret = s.encode()
print(ret) # b'\xe6\x88\x91'
print(ret.decode()) # 我
print(s.encode(encoding='gbk')) # b'\xce\xd2'
10.Python字符串的拼接
join():函数将元素以指定的连接符拼接成一个新的字符串
s = 'hello'
ret = '_'.join(s)
print(ret) # h_e_l_l_o