一.字符串的相关操作
1.字符串的拼接 +
strvar1 = "我爱你,"
strvar2 = "亲爱的姑凉"
res = strvar1 + strvar2
print(res)
2.字符串的重复 *
strvar1 = "重读的事情说三遍"
strvar1 = strvar1*3
print(strvar1)
3.字符串的跨行拼接 \
str1 = "dsdqbidwqdwqdb"\
"ewqhoqheoq"\
"你好明天"
print(str1)
4.字符串的索引
# 0 1 2 3 4 5
strvar = "道路一片光明"
# -6 -5 -4 -3 -2 -1
res = strvar[4]
print(res)
res = strvar[-2]
print(res)
5.字符串的切片:切片就是截取字符串的意思
语法 =》 字符串[::] 完整格式: [开始索引:结束索引:间隔值]
(1)[开始索引] 从开始索引截取到字符串的最后
(2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)
(3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔值截取字符
(5)[:] 或[::] 截取所有字符
strvar = "爱往者爱返,福往者福来"
(1)[开始索引] 从开始索引截取到字符串的最后
res = strvar[3:]
print(res)
(2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)
res = strvar[:5]
print(res)
(3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
res = strvar[6:9]
print(res)
(4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔值截取字符
#爱者返福者
# 0 2 4 6 8 爱 者 返 福 者
res = strvar[0:9:2]
print(res)
#end 不写一味的截取到最后
#3 6 9 爱 福 福
res = strvar[:3:3]
print(res)
#start 开始索引不写,意味着从头开始
# 0 4 爱返
res = strvar[:7:4]
print(res)
# 0 2 4 6 8 10 爱返者福者
strvar = "爱返者爱返,福往者福来"
res = strvar[::2]
print(res)
#倒序 -1 -2 -3 -4 。。。
res = strvar[::-1]
print(res)
(5)[:] 或 [::] 截取所有字符串
res = strvar[:]
res = strvar[::]
print(res)
2.字符串相关函数
(函数就是方法的意思,完成某个功能)
语法: 字符串.函数
常见的字符串函数如下:
capitalize 字符串首字母大写
title 每个单词的首字母大写
upper 将所有字母变成大写
lower 将所有字母变成小写
swapcase 大小写互换
len 计算字符串的长度
count 统计字符串中某个元素的数量
find 查找某个字符串第一次出现的索引位置
index 与 find 功能相同 find找不到返回-1,index找不到数据直接报错
startswith 判断是否以某个字符或字符串为开头
endswith 判断是否以某个字符或字符串结尾
isupper 判断字符串是否都是大写字母
islower 判断字符串是否都是小写字母
istitle 判断字符串是否每个单词都首字母大写
isalnum 判断字符串是否是由数字、字母、汉字组成
isalpha 判断字符串是否由字母或文字组成
isdigit 检测字符串数是数字组成 接受二进制字节流
isdecimal 检测字符串是否以数字组成 必须是纯数字
isnumeric 检测字符串是否以数字组成 接受中文"四"
isspace 判断字符串是否由空白符组成
split 按某字符将字符串分割成列表(默认字符是空格)
join 按某字符将列表拼接成字符串(容器类型都可)
splitlines 按换行来进行切分(\n)
zfill 填充字符串(默认填充0,原字符串右对齐)
ljust 填充字符串,原字符居左 (默认填充空格)
rjust 填充字符串,原字符居右 (默认填充空格)
center 填充字符串,原字符居中 (默认填充空格)
strip 默认去掉首尾两边的空白符
rstrip 去掉右边某个字符
lstrip 去掉左边某个字符
replace()
功能: 把字符串的旧字符换成新字符
格式: 字符串.replace('旧字符','新字符'[, 限制替换的次数])
返回值: 替换之后的字符串
#maketrans translate 是一对
maketrans()
功能: 制作用于字符串替换的映射表
格式: 字符串.maketrans('查找字符','替换字符')两个字符必须长度相等
返回值: 字典
translate()
功能: 进行字符串替换操作
格式: 字符串.translate(maketrans返回的字典)
返回值: 替换之后的字符串
以下对一些相对比较常用的进行讲解举例:
1 .capitalize
字符串首字母大写,除了首字母后的字母都会变成小写
strvar = "this is my world"
res = strvar.capitalize() #这句话的首字母变成了大写
print(res)
2.title
每个单词的首字母大写 (非字母类的就可以让后面字符大写)
# strvar = "this is my world"
strvar = "this is 222my ###world" #即使有什么别的数字也能识别到单词并使其首字母变成大写
res = strvar.title()
print(res)
3.upper 将所有字母变成大写
4.lower 将所有字母变成小写
strvar = "abcdefdqd"
res = strvar.upper()
print(res)
res = strvar.lower()
print(res)
5.swapcase 大小写互换
strvar = "aa bYYYYbb cHHHHHc ddd www "
res = strvar.swapcase()
print(res)
6.len 计算字符串的长度
(所有容器类型数据都可以使用len)
strvar = "阿士大夫撒地方撒旦法师打发尽快哈手机看地方撒即可劳动防护"
res = len(strvar)
print(res)
7.conut 统计字符串中某个元素的个数
strvar = "阿士大夫撒地方撒旦法师打发尽快哈手机看地方撒即可劳动防护可以可以可以"
res = strvar.count("可")
print(res)
8.find 查找某个字符串第一次出现的索引位置
find("字符串",start,end) 从哪里找到哪里结束 高位end取不到
如果find没找到 , 返回-1
strvar = "oh Father This is mY Favorate girl , her name is LL"
res = strvar.find("F")
print(res)
res = strvar.find("name")
print(res) #这个单词从41开始
#如果有开始,没有结束,默认查找到最后
res = strvar.find("F",4)
print(res)
res = strvar.find("s",14,16) #-1
print(res)
9.index
与 find 功能相同 find找不到返回-1,index找不到数据直接报错
# index index 和 find 用法一样,只不过如果找不到直接报错
# 推荐使用find ****
# res = strvar.index("!") #ValueError: substring not found
10.startswith endswith
判断是否以某个字符或字符串为开头
endswith startswith("字符串",start,end) 高位end取不到"""
strvar = "oh Father This is mY Favorate girl , her name is LL"
res = strvar.startswith("oh")
print(res) #判断Ture 或 False
res = strvar.endswith("L")
print(res)
print(len(strvar))
#有点问题
res = strvar.endswith("s",6,47) #
print(res)
res = strvar.endswith("r",-6,-1)
print(res)
#自己举的例子
s = "1234567"
res = len(s)
print(res)
res = strvar.endswith("5",1,4)
print(res)
11.isalpha 判断字符串是否由字母或文字组成
strvar = "sddfqwfqfqwq321231"
print(strvar.isalpha())
strvar = "qweqeqeq是你"
print(strvar.isalpha())
12.isdigit
检测字符串数是数字组成 接受二进制节流(可以用于检测字符串是否是数字)
strvar = "12345678954321"
res = strvar.isdigit()
print(res)
#
二进制字节流:用来存储或传输数据用的一种数据
语法: b'字符串' b后面的字符串只能是ascii编码中的字符集
byte 字节 bytes 字节流
'a' 字符 "aaa" 字符串
如果是中文字符 ,需要用encode 和 decode
strvar = b'123456'
print(strvar,type(strvar))
# strvar = b"中国人站起来了" #error 因为编码不识别
# print(strvar)
res = strvar.isdigit()
print(res)
13.isdecimal
检测字符串是否以数字组成 必须是纯数字
strvar = "2132546"
#star = b'23456' #error
res = strvar.isdecimal()
print(res)
14.split
按某字符将字符串分割成列表(默认字符是空格)
strvar = "you can you up no can no bb"
res = strvar.split() #默认按照空格分隔
print(res)
strvar = "you:can:you:up:no:can:no:bb"
res = strvar.split(":")
print(res)
#可以接受2个参数,第二个参数意味着分隔几次(从左到右)
res = strvar.split(":",3) #意思只分隔三次,另外的不分
print(res)
#可以反向分隔 rsplit (从右到左)
res = strvar.rsplit(":",2)
print(res)
15.join
按某字符将列表拼接成字符串 (容器类型都可)
lst = ['you', 'can', 'you', 'up', 'no', 'can', 'no', 'bb']
res = '+'.join(lst)
print(res)
res = '|'.join(lst)
print(res)
res = ' '.join(lst)
print(res)
16.center 填充字符串,原字符居中 (默认填充空格)
原字符个数+要填充的字符一共10个
例:
strvar = "你好"
res = strvar.center(10,"!") #可以选择要填充的符号
print(res)
res = strvar.center(10) #如果不写默认填充空格
print(res)
17.strip
默认去掉首尾两边的空白符 (空格 \n \t \r\n)
#可用于input输入后
strvar = "\t 大妹子真漂亮 \n"
print(strvar)
res = strvar.strip()
print(res)
18.replace()
# replace("原字符串","要替换的字符串",[可选择替换几次])
strvar = "可爱滴小狼狗喜欢吃肉,有没有,有没有,还有没有"
res = strvar.replace("有没有","真没有")
print(res)
res = strvar.replace("有没有","真没有",1) #只换了一次
print(res)
还有以下没有举例子的字符串的方法:
isupper 判断字符串是否都是大写字母
islower 判断字符串是否都是小写字母
istitle 判断字符串是否每个单词都首字母大写
isalnum 判断字符串是否是由数字、字母、汉字组成
isnumeric 检测字符串是否以数字组成 接受中文"四"
isspace 判断字符串是否由空白符组成
splitlines 按换行来进行切分(\n)
zfill 填充字符串(默认填充0,原字符串右对齐)
ljust 填充字符串,原字符居左 (默认填充空格)
rjust 填充字符串,原字符居右 (默认填充空格)
rstrip 去掉右边某个字符
lstrip 去掉左边某个字符
三.字符串的格式化.format
语法: {} 来进行占位
(1)顺序传参
(2)索引传参
(3)关键字传参
(4)容器类型数据(列表或元组)传参
(5)format的填充符号的使用( ^ > < )
(6)进制转换等特殊符号的使用( :d :f :s :, )
1.顺序传参
strvar = "{}给{}一个飞吻".format("LT","HXD")
print(strvar)
2.索引传参
strvar = "{1}向{0}开了一枪,饮弹而亡".format("王杰","周亮")
print(strvar)
3.关键字传参
strvar = "{hjy}对{zyw}进行扫射,鸡飞狗跳,狗急跳墙".format(zyw="张文",hjy="黄勇")
print(strvar)
4.容器类型传参
#(1)
strvar = "{0[1]}向{1[1]}发一份情书和一张私人照片,鼻血直冒三千尺".format(["黄一政","刘五星","熊华"],("素江南","陈浩"))
print(strvar)
#(2)如果是字典,场景发生在format字符串格式化当中,主要通过键取值时,不要加上引号
strvar = "{group1}向{group2[sjn]}发一份情书和一张私人照片,鼻血直冒三千尺"
res = strvar.format(group1 = ["黄一政","刘五星","熊华"],group2 = {"sjn":"素江南","ch":"陈浩"})
print(res)
5.format的填充符号的使用( ^ > < )
{who:*<10}
^ > <
^ :原字符串居中
> : 原字符串居右
< :原字符串居左
10 : 原字符 + 要填充的字符串 一共 10 个
strvar = "{who:*^10}在长春长生{something:>>10},心情{feel:!<10}"
res = strvar.format(who="潘伟成",something="扎一打疫苗",feel="爽歪歪")
print(res)
6.进制转换等特殊符号的使用(:d :f :s :,)
# :d 整型占位符
strvar = "潘柏买了{:d}个兰博基尼"
res = strvar.format(10)
print(res)
#:3d
strvar = "潘柏买了{:3d}个兰博基尼"
res = strvar.format(10) #默认居右
print(res)
#:^3d
strvar = "潘柏买了{:^3d}个兰博基尼"
res = strvar.format(10) #居中
print(res)
strvar = "潘柏买了{:>4d}个兰博基尼"
res = strvar.format(10) #居右
print(res)
strvar = "潘柏买了{:<4d}个兰博基尼"
res = strvar.format(10) #居左
print(res)
#:f 浮点型占位符98,94, :.2f小数保留2位
strvar = "许经雄体重{:.2f}斤"
res = strvar.format(98.32131321)
print(res)
#:s 字符串占位符
strvar = "{:s}"
res = strvar.format("好看的皮囊千篇一律,有趣的灵魂200多斤")
print(res)
#:,金钱占位符
strvar = "{:,}"
res = strvar.format(2313131)
print(res)