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

 

posted @ 2018-12-07 21:59  行者Sun  阅读(160)  评论(0编辑  收藏  举报