python03-转义字符、is、字符串(截取、切片、描述判断、切割、大小写替换、空格处理)、find 、count 、random 、replace 、format、print、isinstance

1、转义字符

# print('hahahah\nhahah')
# print('hahahah\thahah')
# print('hahahah\\hahah')
# print('hahahah\'nhahah\'')

 2、查看内存地址

python 中,s1 赋值给s2 ,是赋值给的内存地址。如果内存池中,开辟了一个数值是'hello'的内存,不会在开辟一个新的,而是直接拿来用,s3 在定义,直接拿来用

s1 = 'hello'
s2 = s1
s3 = 'hello'
s4 = 'hello1'
print(s1, s2, s3)
print(id(s1))
print(id(s2))
print(id(s3))
print(id(s4))

3、is 判断内存地址相同不

s1 = 'hello'
s2 = s1
s3 = 'hello'
s4 = 'hello1'
print(s1 is s2)
print(s1 is s3)
print(s1 is s4)

 

4、字符串单点截取取值(正序)

s1 = 'ABCDEFG'
# index[0]=A index[1]=B index[2]=C ....
print(s1[4])

5、字符串单点截取取值(倒序)

s1 = 'ABCDEFG'
# index[-1]=G index[-2]=F index[-3]=E ....
print(s1[-1])
print(s1[-2])

6、获取字符串长度

s1 = 'ABCDEFG'
print(len(s1))

 7、切片(获取从第几位到第几位数据)

注:原则是,从start 开始包括start,到end结束,不包括end

# 切片格式:字符串变量[start:end]
# 不包含end,也就是取start到end-1
s1 = 'ABCDEFG'
# index[0]=A index[1]=B index[2]=C
# index[3]=D index[4]=E....
print(s1[1:4])
print(s1[4])

# 切片可以使用倒叙,格式:字符串变量[start-1:end]
# 比如获取字符串的后二位,格式:字符串变量[-3:-1]
# 不能写成[-1:-3],因为index[-1]=G index[-2]=F index[-3]=E
# 程序中需要正着写
s1 = 'ABCDEFG'
print(s1[-3:-1])

# 需求:字符串很长,只要第2位开始,到最后2位中间的数据
s1 = 'ABCDEFG'
# index[0]=A index[1]=B index[2]=C
# index[-1]=G index[-2]=F
print(s1[1:-2])

# 取倒数第3位到最后
s1 = 'ABCDEFG'
# index[-1]=G index[-2]=F index[-3]=E
print(s1[-3:])

# 从头到尾,跟打印一个字符串是一样输出
# 输出一样,并不代表是一个东西,他们的地址不同
# 说明一个变量池,相同的字符串数值,只能有一个
s1 = 'ABCDEFG'
print(s1[:])
print(s1)
print(id(s1[:]))
print(id(s1))
x = s1[:]
print(s1 is x)

# 跟步长,默认不写是1

# 跟步长,默认不写是1
s1 = 'ABCDEFG'
# 取A开始,到F结束包括F,步长是2,也就是A C E G(G被限制不取)
# 也就是A C E
print(s1[:-1:2])

s1 = 'ABCDEFG'
# 取B开始,到最后,步长是2,也就是B D E F
print(s1[1::2])

步长是正数,如setp=2,ABCDEF --> ACE 。 规则:从start开始从左往右
步长是负数,如setp=-2, 规则:从start开始从右往左

假如,s1 = 'ABCDEF'   print(s1[0:4:-2])   就会得到空值。

s1 = 'ABCDEFG'
print(s1[0:6:-1])  # 是空值

因为start 是0位,也就是A,规则是从右往左走2,A的左侧无任何数据,所以是空

s1 = 'ABCDEFG'
print(s1[3:6:-1]) # 这种也是取不到数值,可能在想起始位置是index(3), -1, 取到index(2)?,并不是,在执行s1[3:6] 将这个字符串拿出来,变成一个新的字符串,在新的字符串中start 就是index(0)

所以,如果start 是4 ,end是0,start 位就是 E,E的左侧是D,可以取到数值

s1 = 'ABCDEFG'
print(s1[6:0:-1])

 如果想遍历所有,可以写成print(s1[::-1])

s1 = 'ABCDEFG'
print(s1[::-1])  # GFEDCBA
print(s1[::-2])  # GECA

8、find 函数

find()  从左到右在给定数值中找到符合()中对应的index位置,find只回执满足的第一个,未找到反回 -1

index()  从左到右在给定数值中找到符合()中对应的index位置,index只回执满足的第一个,未找到报错

获取等号后面的blog

url = 'https://blog.csdn.net/Jerry00713?type=blog'
i = url.find('=')  # =是整个url唯一一个,find找到index
print(i)
last = url[i+1:]   
print(last)

find()  和 index()  

url = 'https://A.B.C.D'
i = url.index('.')
b = url.find('.')
print(i)
print(b)
last = url[i+1:]
print(last)

rfind()  从右到左在给定数值中找到符合()中对应的index位置,rfind只回执满足的第一个,未找到反回 -1

rindex()  从右到左在给定数值中找到符合()中对应的index位置,rindex只回执满足的第一个,未找到报错

获取 net/Jerry00713?type=blog'

url = 'https://blog.csdn.net/Jerry00713?type=blog'
i = url.rfind('.')
print(i)
last = url[i+1:]
print(last)

如果找的是一个字符串,则返回字符串的第一个数值的index

url = 'bc.abc#abc.abcd'
i = url.find("abc")
print(i)    # 返回符合要求的第一个abc的a的index,也就是3

9、count 函数

count () 计算出出现的次数

url = 'https://blog.csdn.net/Jerry00713?type=blog'
i = url.count(".")
print(i)

10、random 函数

random 函数是一个随机数函数

random.randint ()  随机整数,按照 ( ) 中的规则判断

import random

a = random.randint(1, 9)
print(a)

 使用 random.randint ()  中的字符串,随机4位的数字

import random

filename=''
s = 'abcdefABCDEF123456'
for i in range(4):
    index = random.randint(0, len(s)-1)
    filename += s[index]
print(filename)

11、字符串描述判断(以下函数只能调用字符串)

capitalize  首字母大写
istitle        是不是每个单词首字母大写
startswith 是否以什么开头
endswith  是否以什么结尾
isalpha   是否是纯字母(字母包括汉字)
isdigit     是否是纯数字
isalnum  是否是数字或者字母(字母包括汉字)
isspace  是否是一个空白字符串(必须>=1 空格)
isupper  判断是否全部是大写字母组成
islower  判断是否全部是大写字母组成

返回数值都是bool类型

判断是不是以https开头的

url = 'https://blog.csdn.net/Jerry00713/article/details/126737304'
result = url.startswith('http:')   # False
result1 = url.startswith('https:')  # True
print(result, result1)

判断上传的是不是图片,图片名字长度不能大于6位,如果大于6位,自动修改

filename = ''
s = 'abcdefABCDEF123456'
file = input("输入文件全名称,并且图片名字长度不能大于6位:")
if file.endswith('jpg') or file.endswith('gif') or file.endswith('png'):
    a = file.rfind('.')
    c = file[:a]
    if len(c) > 6:
        for i in range(6):
            index = random.randint(0, len(s) - 1)
            filename += s[index]
            file = filename + file[a:]
        print("已修改文件名字叫%s" % file)
    else:
        b = file[a + 1:]
        print("格式类型是:%s" % b)
        print("文件名字是:%s" % c)
else:
    print("格式不正确")

isdigit   是否是纯数字    isalpha   是否是纯字母

s = '123'
b = 'abc'
c = '你好'
d = '#123csz'
print(s.isdigit())  # True
print(b.isdigit())  # False
print(c.isdigit())  # False
print(d.isdigit())  # False

print(s.isalpha())  # False
print(b.isalpha())  # True
print(c.isalpha())  # True
print(d.isalpha())  # False

isalnum  是否是数字或者字母(字母包括汉字)

s = '123'
b = 'abc'
c = '123scf'
d = '你好'
f = '#123csz'
print(s.isalnum())  # True
print(b.isalnum())  # True
print(c.isalnum())  # True
print(d.isalnum())  # True
print(f.isalnum())  # False

istitle        是不是每个单词首字母大写

print('My Name Is'.istitle())   # True 
print('My name Is'.istitle())   # False

isspace  是否是一个空白字符串(>=1个空格) 

s = ''
b = ' '
c = ' asd'
print(s.isspace())  # False
print(b.isspace())  # True
print(c.isspace())  # False

项目需求:

# 使用手机号/用户名作为账号 + 密码登录
# 用户名:全部小写,首字母不能是数字,长度必须6位以上
# 手机号:纯数字  长度11
# 密码:必须6位数字
# 符合以上要求进行下层验证,密码次数超过3次,失败
# 判断用户名+密码正确,返回成功,不正确返回失败
flag = True   #
while flag:   # 定义flag=True,当程序中出现flag = False,就会将while 变成 False,进而退出循环
    name = input("输入用户名/手机号码:")
    i = 1
    if (name.islower() and name[0].isalpha() and len(name) >= 6) or (len(name) == 11 and name.isdigit()):
        while True:
            password = input("请输入密码")
            if len(password) == 6 and password.isdigit():
                if (name == '12345678912' and password == '123456' or name == 'admin123' and password == '123456'):
                    print("验证成功")
                    flag = False   # 下方break会跳出当前的while True,由于flag = False,跳出while flag
                else:
                    print("验证失败")
                break
            elif i == 3:
                print("密码次数超过3次,失败")
                break
            else:
                print("密码必须6位数字")
                i += 1
    else:
        print("账户名错误")

12、replace 函数

replace 替换

格式:replace( '内容' , '替换内容' )  默认替换所有匹配字符

s = '你好,世界,真大啊,世界你好'
result = s.replace('世界', 'world')
print(result)  # 你好,world,真大啊,world你好

 格式:replace( '内容' , '替换内容', count )  只替换符合的要求前count 个

s = '你好,世界,真大啊,世界你好,你好世界'
result = s.replace('世界', 'world',2)
print(result)   # 你好,world,真大啊,world你好,你好世界

13、切割字符串

split 左切割,可以按照指定的字符进行切割,从左到右,切割后成为一个列表
rsplit 右切割,可以按照指定的字符进行切割,从右到左,切割后成为一个列表
splitlines 按照行切割
partition  左切割,从左到右,可以按照指定的字符进行切割成三部分,切割后成为一个列表,第一部分是,符合切割符要求的第一个,列表第二位显示是什么分隔符,列表第三位显示是剩余数据不进行分割,直接放入
rpartition  右切割,从右到左,可以按照指定的字符进行切割成三部分,切割后成为一个列表,第一部分是,符合切割符要求的第一个,列表第二位显示是什么分隔符,列表第三位显示是剩余数据不进行分割,直接放入

格式split ('分隔符') 

s = '你好,世界 世界,真大 全面世界,人民'
result = s.split(' ')
print(result)

s = '你好,世界 世界,真大 全面世界,人民'
result = s.split(',')
print(result)

格式split ('分隔符',maxsplit)   代表最大切割次数

s = '你好,世界世界,真大全面世界,人民'
result = s.split(',', 2)
print(result)

格式splitlines()   按照行切割 ,其中()中无任何意义

s = '''你好
世界世界,真大全面世界
人民
'''
result = s.splitlines()
print(result)

 格式partition ()   按照行切割 ,其中()中无任何意义

s = '你好 世界 世界 真大 人民'
result = s.partition(' ')
result1 = s.rpartition(' ')
print(result)
print(result1)

14、字符串大小写替换

upper 将字符串中小写的字母转成大写,如果存在其他字符,则原封不动输出

s = 'abcABC'
s1 = '123你好abcABC'
result = s.upper()
result1 = s1.upper()
print(result)
print(result1)

lower 将字符串中大写的字母转成小写,如果存在其他字符,则原封不动输出

s = 'abcABC'
s1 = '123你好abcABC'
result = s.lower()
result1 = s1.lower()
print(result)
print(result1)

.title() 将首字母大写

list ='hello'
print(list.title())

.swapcase()   大写转小写、小写转大写转

print('Nihao Shijie'.swapcase())
print('nIHAO sHIJIE'.swapcase())
print('nI世界#123'.swapcase())

15、空格处理

ljust  左对齐
rjust  右对齐
center  按要求居中对齐
lstrip  移除左端的空格,中间、尾数据不动
rstrip 移除右端的空格,中间、尾数据不动

strip  移除头尾两端的空格,中间数据不动

问题:input 输入空格后,len算其长度么,答案是算,一个空格一个字符。
如何对避免,用户名不允许使用空格。

strip  移除头尾两端的空格,中间数据不动

s = '  admin user      '
a = s.strip()
print(a)
print(len(a))

rstrip 移除左端的空格,中间、尾数据不动

s = '  admin user      '
a = s.lstrip()
print(a)
print(len(a))

center  按要求居中对齐

center(偶数):s字符串本身10个字符,使用center(14),14-10=4  4÷2=2,给最前端跟最后端各添加2个字符,默认添加空格字符

center(奇数):如果是奇数,怎么给前端跟、后端平均分配?先可前端分配。默认添加空格字符

如何修改默认字符   (s.center(30, '#'))

ljust  左对齐、rjust  右对齐

s字符串本身10个字符,使用ljust (14),14-10=4  给最后端各添加4个字符

 

16、format 函数

format 函数,引入变量

 格式:'字符串{},字符串{}'.format(变量1, 变量2) 

name = '刘'
age = 18

result = '你好{},你今年{},请这边走'.format(name, age)  # {} 引入后面的变量
print(result)

format 变量复用 

format 关键字参数

如下,format传递变量报错

所以需要变量名

format_map 后面接字典

dict = {'name': '刘', 'age': 18}
name = '刘'
age = 18

result = '你好{},你今年{},请这边走'.format(name, age)  # {} 引入后面的变量
print(result)
result1 = '你好{name},你今年{age},请这边走'.format_map(dict)
print(result1) 

17、print

最后以为什么字母结尾

print(s.center(30), end='#')

print (sep=' ')  意思是在元素之间用什么拼接

print('nihao','世界',sep='--')

18、isinstance

isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。
isinstance() 与 type() 区别:
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值