day 10 字符串的魔法
1,Capitaliza 首字母大写
test = "alex" v = test.capitalize() print (v) 运行结果:Alex
2,casefold
lower
所有变小写的两种魔法
test = "Alex" # 字母变小写,方法1
v = test.casefold() print(v)
# 字母变小写,方法2 v= test.lower() print(v) 上面两种方法,相同点在于,都是变小写 上面两种方法的区别在于,casefold更牛逼,很多未知的对相应变小写 lower只能处理英文字符,在其他喝多国的语言中,有很多对应关系。
3,center 设置宽度,并将内容居中
跟上面两个魔法不一样 def center(self,width,fillchar=None) 对于参数celf 可以直接忽略掉, 对于width,后面没有等号的时候,说明必须带(你来找我办事,一定要给钱) 对于fillchar,后面有=号,说明默认的,如果不带,默认就是None
test = "Alex" v = test.center(20) #一共20个位置,Alex 放中间 #空白位置填充 #只能填一个字符,可有可无 v = test.center(20,"*") # 一共20个位置,空白处填* a = test.center(30,"a") #一共20个位置,空白处填a print(v) print(a)
4,count
计算一下,字符串在上面出现了多少次
def count(self, sub, start=None, end=None)
test = "Alex" d = test.count("e") a = test.count("e",5,6) # 去字符串中寻找子序出现的次数 # 5 从第几个开始往后数 # 从5开始到第六个6结束,在这个范围内找 print(a)
5,欠下来
encode decoude
忽略,以后会拿出来单独讲
6,startswitch endswith
表示以什么结尾 表示以上面开头,对的True,错的false
test = "Alex" # 表示以什么结尾 v = test.endswith('x') print(v) test = "Alex" # # 表示以什么开头 v = test.startswith("A") print(v)
结果:
True
7,find
找到位置,并获取位置(返回值为-1表示),(5,7表示在5和7之间找)
test = "alexalex" # 从开始往后找,找到第一个之后,获取其位置 # 大于 或 大于等于 v = test.find("ex") print(v)
v = test.find("ex",5,7)
print(v)
8,format 传值
将一个字符串中的占位符,替换为指定的值
有名字的:
test = "i am {name},age {a}" print(test) v = test.format(name='alex',a=19) print(v)
没名字的:
根据顺序替换的 test = "i am {0},age {1}" print(test) v = test.format('alex',1) print(v)
这种方式,格式化,传入的值只能是字典格式
test = "i am {name},age {age}"
v = test.format(name='alex',age='10')
a = test.format_map({"name":'alex',"a":19})
print(v)
print(a)
9,index 找不到,报错(功能同find,建议用find)
# index 找不到,报错,忽略 test = "malexalex" v = test.index('a') print(v)
10,isalum(判断字符串中,是否只是包含字母和数字,如果是True,不是false)
字符串中,是否只是包含字母和数字 都是字母和都是数字都可以 test = "uas==f98" v = test.isalnum() print(v)
# 字符串中是否包含字母和数字
test = "123"
v = test.isalnum()
print(v)
11,expandtabs 断句
expandtabs 断句20,如果没有找到\t s = "1234\t561234567\t7890"
v = s.expandtabs(6)
print(v)
结果:
1234 561234567 7890
说明:以为单位,每6个断句,遇到\t占位,直至6个字符
test = "username\temail\tpassword\nying@q.com\tlaiying\t123\nying@q.com\tlaiying\t123\n" v = test.expandtabs(20) print(v)
结果:
username email password
ying@q.com laiying 123
ying@q.com laiying 123
12,isalpha(是否只包含字母,是的true,不是false)
# 字母的时候true,有其他的false test = "2asdf" v = test.isalpha() print(v)
13,判定一个字符串是否是数字
isdecimal 虽然第三个牛逼,但是用的最多的是第一种
isdigit
isnumeric 这个更流弊
判定当前输入的是否是数字 test = "二" 1 ② v1 = test.isdecimal() 十进制的小数 v2 = test.isdigit() v3 = test.isnumeric() print(v1,v2,v3) False False True,第三种更流弊,用的最多是第一种
14,isprintable
是否存在不可显示的字符
判定字符串中是否包含 \t制表符 \n 换行键
打印正常为True
test = "sunjinquan\t" v = test.isprintable() print(v)
结果:
False
15,isspace
判断是否全是空格
test = " " v = test.isspace() print(v)
结果:
True
16.title
转换成标题
转换成标题
test = "Asba Arre Dd wo d charcaher"
v = test.title()
print(v)
结果:
Asba Arre Dd Wo D Charcaher
17,istitle 判断是否为标题
判断是否是标题,标题首字母都是大写的
test = "Asba Arre Dd wo d charcaher"
v = test.istitle()
print(v)
结果:
False
18,swapcase 把小写转换成大写
# 把小写转换成大写 test = "alex" v = test.swapcase() print(v)
结果:
ALEX
19,isidentifier
判定是否为标识符
# 字母 数字 下划线 # 判定是否为标识符 a = "1_23" v = a.isidentifier() print (v)
20
******************非常非常非常重要****************************
# 将字符串中的每一个元素按照指定分隔符进行拼接
将字符串以什么拆解
test = "你是风儿我是沙"
现在想输出 你 是 风 儿 我 是 沙
test = "你是风儿我是沙"
print(test)
t = ' '
v = t.join(test)
print(v)
结果:
你 是 风 儿 我 是 沙
②
test = "你是风儿我是沙"
v= " ".join(test)
print(v)
也是一样的效果
结果:
你 是 风 儿 我 是 沙
③
test = "你是风儿我是沙"
print(test)
v = "_".join(test)
print(v)
结果:
你是风儿我是沙
你_是_风_儿_我_是_沙
21,填充符just
20表示宽度
# 右边填充 # test = "alex" # v = test.ljust(20,"*") # print(v) # alex****************
# 左边填充 # test = "alex" # v = test.rjust(20,"*") # print(v)
****************alex
# 中间填充 # test = "alex" # v = test.center(20,"*") # print(v) # ********alex********
用00000填充,一般用不着
用00000填充,一般用不着test = "alex"v = test.zfill(20)print(v)0000000000000000alex
22,islower判断是否为小写
isupper判断是否为大写
lower转换为小写
upper 转换为大写
网页验证码使用,大小写都行
网页验证码时候使用,大小写都行
test = "Alex"
v1 = test.islower()
判断是否小写
v2 = test.lower()
变成小写
print(v1,v2)
运行结果:
False alex
# 判断是否全部是大小写 和 转换为大小写 # test = "Alex" # v1 = test.isupper() # v2 = test.upper() # print (v1,v2)
False ALEX
23,lstrip rstrip strip 移除空格的,还能移除换行
第一种,默认移除空格和换行
# 把空格处理掉,左边的,右边的,还有都处理掉,三种 # 还能移除换行 /t /n
test = " alex "
a = test.lstrip()
a = test.rstrip()
a = test.strip()
print(a)
第二种用法,把前面的指定内容v去掉
test = "valex"
a = test.lstrip("v")
a = test.rstrip()
a = test.strip()
print(a)
第三种用法,移除指定字符串(包含子序列中的任意字符也行)
注意:从右向左找,找不到了就停止,找到继续哈哈哈,这个好难懂,老师讲的好
test = "alexdex"
a = test.rstrip("exd")
print(a)
24,maketrans 和 translate 一起用
# 其实这里就是一个替换,上下对应替换
test = "你是风儿我是沙沙是是是"
m = str.maketrans("你是风儿我是沙","去你吗的风和杀")
new_test = test.translate(m)
print(new_test)
25,partition,rpartiton,split,rsplit 用来做分割的
# 分割用的
# 从左看,他先看到了第一个S,然后分割,后面作为整体不管了,永远分三份
test = "testdsafhdsjdafhjasieshjdhssdfgdsd"
v = test.partition("s")
print(v)
运行结果:
('te', 's', 'tdsafhdsjdafhjasieshjdhssdfgdsd')
从右看,先看到2,然后分割,也是三份
test = "testdsafhdsjdafhjasieshjdhssdfgdsd"
v = test.rpartition("s")
print(v)
# v = test.split("s") #看到每个s,都进行分割
v =test.rsplit("s",2)
print(v)
后面可以加参数,数字,让他分割几次,但是有个弊端,s没有了
# 后期会学习正则表达式,是这两个功能的合集
26,splitlines 自动只根据换行分割
也是分割,只能根据换行分割,参数True,包含换行符,false,不包含分行福
test = "adafdaueionafdaufieo\ndakfdjaslfj\ndaf\n" v = test.splitlines(False) print(v)
27,startswith endswith
判断是否以什么什么开头,以什么什么结尾
# 以什么什么开头,以什么什么结尾test = "backend 1.1.1.1"v = test.startswith("1ba")c = test.endswith("1")print(v)print(c)
结果:
False
True
28,swapcase 大小写转换
test = "alexddfa" v = test.swapcase() print(v)
结果:
ALEXDDFA
29.replace 替换
# 补充一个
test = "alexalex"
v = test.replace("ex","bbb",1)
只替换第一个
v = test.replace("ex","bbb")
不加参数,全部替换print(v)
总结:
##############有七个基本魔法需要记住#####################
join
split
find
strip
upper
lower
replace
##############有六个基本魔法需要记住#####################
######################灰魔法(其他数据类型都可以使用)##################################
1,通过索引,下标,获取字符串中的某一个字符
test = "alex"索引,下标,获取字符串中的某一个字符v = test[0]a = test[1]print(v,a)
结果:
a l
2,切片
# 索引范围
test = "alex"v = test[0:2] 大于0 小于2
print(v)
结果:
al
a = test[0:-1]
print(a)
结果
ale
3,len获取字符串中由几个字符组成
获取字符串中由几个字符组成
test = "alex"
a = "中国人"
v = len(test)
t = len(a)
print(v)
print(t)
结果;
4
3
li = [11,22,33,44,55,"asdf"]
计算以逗号为分割
c = len("asdfasfasfdasg")
a = len(li)
print(c)
print(a)
结果:
14
6
test = "孙金权哈哈哈,窗前明月光" index = 0 while index< len(test): v = test[index] print(v) index = index + 1 print("完成")
结果:
孙
金
权
哈
哈
哈
,
窗
前
明
月
光
完成
4,for循环
魔法里的for循环,for 变量名 in 字符串
for循环可以用于索引和切片
魔法里的for循环,for 变量名 in 字符串 test = "孙金权哈哈哈,窗前明月光" for sjq in test: print(sjq)
结果:
孙
金
权
哈
哈
哈
,
窗
前
明
月
光
#################################################################################
# 记住这10个魔法,字符串就算OK了
##############################################################################
深灰魔法
# 字符串一旦创建,不可修改,如果修改,会创建一个新的字符串
name = "zhengjianwen"
print(id(name))
age = "18"
print(id(age))
info = name + age
print(info)
print(id(info))
结果:
53083656
53477888
zhengjianwen18
53506400