字符串的运用
索引 (下标) 和切片
索引有两套机制
lndex:
a b c d e f g
1: 0 1 2 3 4 5 6 0 ~ len(s1)-1
2: -7 -6 -5 -4 -3 -2 -1 -len(s1) ~ -1
格式:字符串[start:end:step(非必要参数)]
-
start : 起始索引,从0开始
-
end:结束索引
-
step : 步长 (正负判断方向)默认从左往右 步长为1
如果[start,end]的方向是从左往右,而step的方向是从右往左,那么就取不到,例如
m = 'ssd343lf93his243'
print(m[4:10:-1])
例子:
s = "asdsfgdg"
取出所有元素 默认步长为1 asdsfgdg
print(s[:])
从下标为1开始,取出后面所有的元素(没有结束位) sdsfgdg
print(s[1:])
从起始位置开始,取到下标为4的前一个元素 (包左不包右) asds
print(s[:4])
从起始位置开始,取到倒数第一个元素 (包左不包右) asdsfgd
print(s[:-1])
从下标为1开始,取到下标为5的元素 (包左不包右) sf
print(s[1:6:3])
python 字符串快速逆置
print(s[::-1]) # gdgfsdsa 从后向前,按步长为1进行取值
获取长度
- len()函数
s = '341432'
print(len(s)) #6
查找内容
总结:
find: 从左向右查找,只要遇到一个符合要求的则返回位置。没有找到就返回-1
rfind: 和rind一样,只不过查找方向相反
index: 类似find,但是如果找不到会报错
rindex: 类似index,查找方向相反。
1、find
查找指定内容 是否存在
存在就返回第一次出现的位置的索引值
不存在,则返回-1
s = 'Good night'
print(s.find('i')) #6
print(s.find('1')) #-1
2、rfind
类似于 find()函数,不过是从右边开始查找。数还是从左往右
mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.rfind('好')) # 14
3、index
跟find()方法一样,只不过,find方法未找到时,返回-1,而str未找到时,会报一个异常。
语法格式:
S.index(sub[, start[, end]]) -> int
4、rindex
类似于 index(),不过是从右边开始。
判断
总结:
startswith : 判断字符串是否以 指定内容开头。
endswith : 判断字符串是否以 指定内容结尾。
isalpha : 判断字符串是否是 (纯字母)
isdigit : 判断一个字符串是否是 (纯数字) 有非数字
isalnum : 判断是否由 (数字和字母)
isspace : 判断是否 只有 (空格)
1. startswith
判断字符串是否以指定内容开头。
mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.startswith('今')) # True
print(mystr.startswith('今日')) # False
2. endswith
判断字符串是否以指定内容结尾。
mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.endswith('好风光')) #True
print(mystr.endswith('好日子')) #False
3. isalpha
判断字符串是否是纯字母。
mystr = 'hello'
print(mystr.isalpha()) # True
mystr = 'hello world'
print(mystr.isalpha()) # False 因为中间有空格
4. isdigit
判断一个字符串是否是纯数字
mystr = '1234'
print(mystr.isdigit()) # True
mystr = '123.4'
print(mystr.isdigit()) # False 有小数点
5. isalnum
判断是否由 (数字和字母) 组成。纯(数字/字母)也可以
mystr = 'abcd'
print(mystr.isalnum()) # True
mystr = 'abcd1234'
print(mystr.isalnum()) # True
mystr = 'abcd1234_'
print(mystr.isalnum()) # False
6、isspace
如果 mystr 中只包含空格,则返回 True,否则返回 False.
mystr = ''
print(mystr.isspace()) # False mystr是一个空字符串
mystr = ' '
print(mystr.isspace()) # True 只有空格
mystr = ' d'
print(mystr.isspace()) # False 除了空格外还有其他内容
计算出现次数
count
返回 str在start和end之间 在 mystr里面出现的次数。
示例:
mystr = '今天天气好晴朗,处处好风光呀好风光'
print(mystr.count('好')) # 3. '好'字出现三次
替换内容
replace
替换字符串中指定的内容,
s='hello world'
print(s.replace('l','x')) # hexxo worxd
如果指定了次数,则替换不会超过指定次数
s='hello world'
print(s.replace('l','x',2)) # hexxo world
切割字符串:
总结:
split 和 rsplit:是把指定切割的内容变成分隔符(",") 返回一个列表
partition 和 rparttition: 返回一个元组
是把指定切割的内容 单独出来,不是切掉也不是变成分隔符
1、split
从左往右切割,返回一个列表,把符合的全都切割成分隔符 (’, ')
s='hello world'
print(s.split('l')) # ['he', '', 'o wor', 'd']
如果有指定几次字符串为分割,则分为几次+1个字符串
s='hello world'
print(s.split('l',2)) # ['he', '', 'o world']
2、rsplit
用法和split基本一致,只不过是从右往左分隔。
s='hello world'
print(s.rsplit('l',2)) # ['hel', 'o wor', 'd']
3、splitlines
按照行分隔,返回一个包含各行作为元素的列表。
mystr = 'hello \n world'
print(mystr.splitlines()) # hello world
4、partition
以指定的内容为中心 用 ’ , ’ 分隔开 分 前 中 后
s='hellon world'
print(s.partition("l")) # ('he', 'l', 'lon world')
5、rpartition
类似于 partition()函数,不过是从右边开始.
s='hellon world'
print(s.rpartition("l")) # ('hellon wor', 'l', 'd')
修改大小写
修改大小写的功能 只对英文 有效
总结:
第一个单词首字母大写capitalize,
每个单词的首字母大写title,
全小写lower,
全大写upper.
1、capitalize
第一个单词的首字母大写。
mystr = 'hello world'
print(mystr.capitalize()) # Hello world
2、title
每个单词的首字母大写。
mystr = 'hello world'
print(mystr.title()) # Hello World
3、lower
所有都变成小写。
mystr = 'hElLo WorLD'
print(mystr.lower()) # hello world
4、upper
所有都变成大写。
mystr = 'hello world'
print(mystr.upper()) #HELLO WORLD
空格处理
1. ljust
返回指定长度的字符串,并在右侧使用空白字符补全(左对齐)。
str = 'hello'
print(str.ljust(10)) # hello 在右边补了五个空格
2. rjust
返回指定长度的字符串,并在左侧使用空白字符补全(右对齐)。
str = 'hello'
print(str.rjust(10)) # hello在左边补了五个空格
3. center
返回指定长度的字符串,并在两端使用空白字符补全(居中对齐)
str = 'hello'
print(str.center(10)) # hello 两端加空格,让内容居中
4. lstrip
删除 mystr 左边的空白字符。
mystr = ' he llo '
print(str.lstrip()) #he llo 只去掉了左边的空格,中间和右边的空格被保留
5. rstrip
删除 mystr 右边的空白字符。
mystr = ' he llo '
print(str.rstrip()) # he llo右边的空格被删除
6. strip
删除两断的空白字符。
str = ' he llo '
print(str.strip()) #he llo