字符串相关操作:
(1)字符串的拼接
(2)字符串的重复
(3)字符串跨行拼接
(4)字符串的索引
(5)字符串的切片:
语法 => 字符串[::] 完整格式:[开始索引:结束索引:间隔值]
(1)[开始索引:] 从开始索引截取到字符串的最后
(2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)
(3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
(4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取字符
(5)[:]或[::] 截取所有字符串
字符串的格式化format
(1)顺序传参
(2)索引传参
(3)关键字传参
(4)容器类型数据(列表或元祖)传参
(5)format的填充符号的使用( ^ > < )
(6)进制转换等特殊符号的使用( :d :f :s :, )
字符串相关函数需要背记的
函数名 | 含义 |
---|---|
capitalize() | 字符串首字母大写 |
title() | 每个单词的首字母大写 |
upper() | 将所有字母变成大写 |
lower() | 将所有字母变成小写 |
swapcase() | 将字符串中大小写字母互换 |
len() | 计算字符串长度 |
count() | 统计字符串中某个元素的数量 |
find() | 查找某个字符第一次出现位置 |
inde() | 与find功能相同,fingd找不到返回-1,index找不到直接报错 |
startwith() | 判断是否以某个字符或字符串为开头 |
endswith() | 判断是否以某个字符或字符串结尾 |
isalpha() | 判断字符串是否使用字母和文字组成 |
isdigit() | 检测字符串是否是纯数字组成 |
isdecimal() | 检测字符串是否是以数字组成,必须是纯数字 |
*join() | 按某字符将列表拼接成字符串(默认字符是空格) |
center() | 填充字符串,原字符居中默认填充空格 |
strip() | 默认去掉首位两边的的空白符 |
replace() | 将字符串的旧字符替换成新字符 |
这些需要了解的
函数名 | 含义 |
---|---|
isupper | 判断字符串是否都是大写字母 |
islower | 判断字符串是否都是小写字母 |
istitle | 判断字符串是否 |
isalnum() | 判断字符串是否是由数字、字母、汉字构成 |
isnumeri | 检测字符串是否以数字组成,接受中文四 |
isspace | 判断字符串是否由空白符组成 |
splitlines | 按换行来切分 |
字符串的相关操作
字符串的拼接(+)
strvar1 = "我爱啃"
strvar2 = "大猪蹄子"
res = strvar1 + strvar2
strvar1 += strvar2 # strvar1 = strvar1 + strvar2
print(strvar1)
(2)字符串跨行拼接(\)
strvar = "klasdjflkjsadklfjaskldjfklasjdklfjaskldfjklasdjfklsdjflkajs;dlkfjal;ksdjflkasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfdfl"\
"kl09q2384092830482309riowsrfiej"
print(strvar)
字符串的索引
# 0 1 2 3 4 5
strvar = "林品如真漂亮"
# -6-5-4-3-2-1
print(strvar[2])
print(strvar[-4])
‘’’(5)字符串的切片: 所谓的切片就是截图
语法 => 字符串[::] 完整格式:[开始索引:结束索引:间隔值]
(1)[开始索引:] 从开始索引截取到字符串的最后
(2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)
(3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
(4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取字符
(5)[:]或[::] 截取所有字符串’’’
(1)[开始索引:] 从开始索引截取到字符串的最后
strvar = "我爱你亲爱的菇凉,见到你我就心慌,你那美丽的大眼睛,让我魂牵梦绕"
res = strvar[2:]
res = strvar[-3:]
print(res)
(2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)
#高位取不到
res = strvar[:8] # 最大值到7
print(res)
(3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
res = strvar[9:12] # 从索引9截取到索引11 高位取不到
print(res)
(4)[开始索引:结束索引:间隔值]
从开始索引截取到结束索引之前按照指定的间隔截取字符
正向截取
把所有的索引算出来,然后依次比对拿值
strvar = "我爱你亲爱的菇凉,见到你我就心慌,你那美丽的大眼睛,让我魂牵梦绕"
0 2 4 6 8 10 12 14
我你爱 菇 , 到 我 心
计算方法就是先取0,再取0+2=2,再取2+2。以此类推取到最大位高位取不到
res = strvar[0:16:2]
反向截取
"""
res = strvar[::-1]
-1 -2 -3 -4 ...
绕 梦 牵 魂
res = strvar[::-2]
-1 -3 -5 -7 -9 ....
"""
无论是正向还是反向就是左侧的数字通过step能够到达右边()如果没有像是[1:6]默认是+1的
res = strvar[0:16:2]。这个,0能够通过不断+2变成16
res = strvar[-9:3:-2]。这个就不行,因为-9没有办法通过+(-2)即-2变成-3
res = strvar[-1:-9:-2]。这个就行,因为-1可以通过不断-2到达-9的位置
#(5)[:]或[::] 截取所有字符串
res = strvar[:]
res2 = strvar[::]
print(res)
print(res2)
注意的地方:目的是要截取到值
strvar = "12345"
res = strvar[-5:0] # 取不到值
print(res)
字符串的格式化 format
(1)顺序传参
(2)索引传参
(3)关键字传参
(4)容器类型数据(列表或元祖)传参
(1)顺序传参 {}是占位符(emmm可以理解为字符串比较多所以用括号括起来)
strvar = "{}向{}来了一个大大的拥抱"
res = strvar.format("安妮的熊","法外狂徒")
print(res)
(2)索引传参
strvar = "{1}向{0}开了一枪,饮蛋儿亡"
res = strvar.format("烬","派克")
print(res)
(3)关键字传参
strvar = "{who2}向{who1}扫射,令人闻风丧胆"
res = strvar.format(who1="狂野大嫖客",who2="VN")
print(res)
(4)容器类型数据:列表按索引传参
strvar = "{1[1]}向{0[0]}泡了一个眉眼,让人魂不守舍,鼻血直冒三千多尺"
res = strvar.format(["赵信,"泰达米尔"],("艾希","阿狸"))
print(res)
在format字符串格式化结构中 如果此容器类型数据是字典 通过键取值的时候不要加引号
strvar = {group1[1]}向{group2[赏金猎人]}抛了一个眉眼,让人魂不守舍,鼻血直冒三万多尺"
res = strvar.format(group1 = ["赵信","无极剑圣"],group2 = {"九尾妖狐":"阿狸","赏金猎人":"莎拉"})
print(res)
#请注意占位符中赏金并没有引号
(5) format 的填充符号的使用( ^ 、> 、< )
^ 原字符串居中
> 原字符串居右
< 原字符串居左
{who:*>10}
who : 关键字参数
* : 要填充的字符
> : 原字符串填充的方向
10 : 总长度10 = 原字符串长度 + 填充字符的长度
strvar = "{who:*^10} 在成都实验小学{something:>>10},感觉{feel:!<10}"
res = strvar.format(who = "成都市长",something="吃了一顿饭",feel="要上天哦")
print(res)
(6)进制转换等特殊符号的使用( :d :f ? :, )
:d 整型占位符
strvar = "王大锤买了{:d}个跑车,酷炫的要死"
# 可以通过 < > ^ 改变方向
res = strvar.format(7)
print(res)
strvar = "我买了{:^3d}个跑车,布加迪威龙玩具车"
res = strvar.format(9)
print(res)
:f 浮点型占位符 :.2f 代表保留两位小数 可以四舍五入
strvar = "提莫身高{:.2f}"
res = strvar.format(1.719)
print(res)
字符串占位符
strvar = "{:s}"
res = strvar.format("有趣的灵魂200多斤")
print(res)
#:, 金钱占位符
strvar = "{:,}"
res = strvar.format(1234567)
print(res)
#英文金钱占位符,3位加个逗号从右向左
综合例子
strvar = "{:s}开工资了,发了{:.2f}钱,买了{:<3d}个降噪耳机"
res = strvar.format("liuxing",999.919,19)
print(res)
字符串相关函数(方法)
使用字符串当中的某一个方法 格式:“字符串”.方法()
*capitalize 字符串首字母大写
strvar = "this is my boy"
res = strvar.capitalize()
print(res)
*title 每个单词的首字母大写 (非字母隔开的单词)
strvar = "this is999my***girl"
res = strvar.title()
print(res)
*upper 将所有字母变成大写
strvar = "aa bbb CCC"
res = strvar.upper()
print(res)
*swapcase 大小写互换
strvar = "aa bbb CCC"
res = strvar.swapcase()
print(res)
*count 统计字符串中某个元素的数量
strvar = "我好帅哦我好帅哦哦"
res = strvar.count("哦")
print(res)
*find 查找某个字符串第一次出现的索引位置 (如果找不到返回-1)
'''find("字符串",start,end) 可以划定范围查找'''
strvar = "Oh Father this is mY Favorite Boy"
res = strvar.find("Father")
res = strvar.find("F",4)
res = strvar.find("t",6,11) #正向索引
res = strvar.find("B",-4,-1)#反向索引
#说是反向索引其实只是索引从-4变成-1顺序还是从左向右。别被这个反向迷惑了。
print(res)
*index 与 find 功能相同 find找不到返回-1,index找不到数据直接报错
strvar = "Oh Father this is mY Favorite Boy
# res = strvar.index("abc") error 找不到
print(res)
*startswith 判断是否以某个字符或字符串为开头
'''startswith("字符串",start,end)'''
strvar = "Oh Father this is mY Favorite Boy
res = strvar.startswith("O")
res = strvar.startswith("Father",4)
print(res)
*endswith 判断是否以某个字符或字符串结尾
res = strvar.endswith("y",-3)
res = strvar.endswith("Bo",-5,-2)
print(res)
*split 按某字符将字符串分割成列表(默认字符是空格)split 可以选择第二个参数,用来控制分割几次
strvar = "you can you up no can no bb"
res = strvar.split()
print(res)
strvar = "you-can-you-up-no-can-no-bb"
# split 方向从左向右
res = strvar.split("-",1)
print(res)
# split 方向从右向左 r => right
res = strvar.rsplit("-",2)
print(res)
*join 按某字符将列表拼接成字符串(容器类型都可)
listvar = ['you', 'can', 'you', 'up', 'no', 'can', 'no', 'bb']
res = "^".join(listvar)
print(res)
*replace 替换字符串(可选择替换的次数)
'''字符串.replace(就字符串,新字符串,[替换的次数])'''
strvar = "可爱的小狼狗喜欢吃肉,有没有,有没有,还有没有"
res = strvar.replace("有没有","真没有")
print(res)
res = strvar.replace("有没有","真没有",1)
print(res)
is 开头的函数 都是返回True 或者 False
*isalnum 判断字符串是否是由数字、字母、汉字组成
print(111)
strvar = "????666888ismysupergirlさしす"
print(strvar.isalnum())
*isdigit 检测字符串是数字组成 接受二进制字节流
"""
# 二进制的字节流 bytes => b" " Byte是字节
字节流用来做网络传输或存储用的
b开头修饰的字符串必须是ascii编码中的字符
例如: b"12345"
b"陈梦吉大帅锅"错误 中文如果想要转化成字节流需要使用encode和decode
"""
strvar = b"123456"
res = strvar.isdigit()
print(res)
*isdecimal 检测字符串是否以数字组成 必须是纯数字
print("<===>")
strvar = "7890"
res = strvar.isdecimal()
print(res)
*center 填充字符串,原字符居中 (默认填充空格)
center(要填充的数字,字符)
要填充的数字 是总长度 = 要填冲的字符 + 要填充的符号
strvar = "好"
res = strvar.center(6,"*")
print(res)
# 方法一
strvar = " "
res = strvar.center(7," ")
print(res,99)
# 方法二
strvar = "%7s" % (' ')
print(strvar,99)
*strip 默认去掉首尾两边的空白符 ( \n \t 空格)
strvar = " 周杰伦 "
res =strvar.strip()
print(res)
指定去除首尾两边的字符@
strvar = "@ss"
res = strvar.strip("@")
print(res)
还有一些函数。等用到了再查吧…