python之容器类型数据的一系列操作之字符串

字符串相关操作:

(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)

还有一些函数。等用到了再查吧…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值