字符串截取:[ ] [ : ]
# 用 [ ] [ : ] 截取字符串。
1 filename='picture.png' 2 print(filename[5]) #通过[ ] 可以结合位置,获取字母,位置(下标)/(索引)都是从0开始 3 4 print(filename[0:7]) #包括前边的,不包括后面的,即0~6,与range()类似 5 6 print(filename[3:7]) #截取字符串 7 8 print(filename[3:]) #只要省略的是后面的,表示取值到字符串的末尾位置 9 10 print(filename[:7]) #省略的是前面的,表示从0开始取值 11 12 print(filename[8:-1]) 13 14 print(filename[-1:]) #负数,表示取值的方向是反的(倒着取值) 15 16 print(filename[:-2]) 17 18 print(filename[::-1]) #-1表示倒着取值,将整个字符串倒叙输出 19 20 print(filename[5:0:-1]) #从5到0逆向取值,[5:0:-1],最后一位表示方向 21 print('----------->',filename[5:0:1]) #这种写法不对,1表示正向取值,而5:0表示逆向,与之冲突 22 23 print(filename[::2]) #[start : end : step]
#字符串的内建函数:声明一个字符串。默认可以调用内建函数(系统准备好的一些函数)
#大小写相关的函数:capitalize() title() upper() lower()
1 message='zhao is a beautiful gril' 2 m=message.capitalize() #一句话的首字母大写 3 print(m) 4 5 m=message.title() #返回值:每个单词的首字母大写 6 print(m) 7 8 result=message.istitle() #返回值是布尔类型,判断字符串(单词)是否首字母大写 9 print(result) 10 11 m=message.upper() #全部转成大写字母 12 print(m) 13 14 result=m.lower() #全部转成小写字母 15 print(result)
#案例:验证码
#IndexError:string index out of range 表示字符串索引超出范围
#index : 0~len(s)-1
1 s='QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890' 2 #print(len(s)) #字符串的长度len(str),返回值是一个整形数 3 code='' 4 import random 5 for i in range(4): 6 ran=random.randint(1,len(s)-1) 7 code+=s[ran] 8 print('验证码:'+code) 9 10 #提示用户输入验证码: 11 user_input=input('请输入验证码:') 12 if user_input.lower()==code.lower(): 13 print('验证码输入正确') 14 else: 15 print('验证码错误')
#字符串查找,替换相关的函数:find() rfind() lfind() index() rindex() lindex() replace()
# index() 用法与 find() 类似,不同点是index() 函数会在找不到字母时报错,而find() 只返回-1
1 s1='index lucky goods' 2 result='l' in s1 3 print(result) 4 5 position=s1.find('c') #find() 返回值是字母第一次出现的位置,如果字符串中没有,返回-1 6 print(position) 7 8 p=s1.find('l',position+1,len(s1)-5) #可以指定开始和结尾位置查找 9 print(p)
#案例:从链接截取保存图片地址
#https://www.baidu.com/img/dong_66cae51456b9983a890610875e89183c.gif
1 url='https://www.baidu.com/img/dong_66cae51456b9983a890610875e89183c.gif' 2 p=url.rfind('/') #right find 从右侧找出 / 的位置 3 print(p) 4 filename=url[p+1:] #截取出图片的名称 5 print(filename)
#替换字符串 replace(old,new,[max]) 用new 替换old 同时可以指定替换的次数 max
1 s1='k k k h h h ' 2 s2=s1.replace(' ','#') 3 print(s2) 4 s2=s1.replace(' ','',2) #将前两个空格去掉 5 print(s2)
#字符串内建函数: encode编码 decode解码
#编码:对中文等语言进行编码才能在网络传播
# gbk 中文 gbk2312 简体中文
1 msg='认真听课' 2 result=msg.encode('utf-8') 3 print(result) 4 5 #解码: 6 m=result.decode('utf-8') 7 print(m)
#字符串内建函数: startswith() endswith() 返回值都是布尔类型
#startswith 判断是否是以xxx开头的,或者 endwith 判断是否是以xxx结尾的
#应用:文件上传:只能上传图片(jpg,png,bmp,gif)
1 filename='笔记.doc' 2 result=filename.endswith('doc') 3 print(result) 4 5 s='hello' 6 result=s.startswith('he') 7 print(result)
#案例:文件上传:图片文件(jpg,png,bmp,gif)
1 while True: 2 path=input('请选择文件:') 3 p=path.rfind('\\') 4 filename=path[p+1:] #切片截取文件名,判断是否是图片类型 5 if filename.endswith('jpg') or filename.endswith('png') or filename.endswith('gif'): 6 print('图片允许上传') 7 break 8 else: 9 print('不是图片格式,只能上传图片')
# expandtabs(tabsize=8)把字符串string 中的tab符号转为空格,tab符号默认的空格数是8
# 字符串判断:
# isalnum() 如果字符串至少有一个字符并且所有的字符都是字母或数字则返回True,否则返回False
# isalpha() 判断是否是字母
# isdigit() 判断是否是数字
# islower() 如果字符串中包含至少一个区分大小写的字符,并且所有这些字符都是小写则返回True
# isnumeric() 如果字符串中只包含数字字符则返回True,否则返回False
# isspace() 如果字符串只包含空白,则返回True
# istitle() 如果字符串是标题化的(字母全部为大写)则返回True
# isupper() 如果字符串中包含至少一个大写字符则返回True
1 s='sadfgh' 2 result=s.isalpha() 3 print('result=',result) 4 s='6877' 5 result=s.isdigit() 6 print(result)
1 sum=0 2 for i in range(3): 3 num=input('请输入数字:') 4 if num.isdigit(): 5 num=int(num) 6 sum+=num 7 i+=1 8 print('sum=',sum)
1 sum=0 2 i=1 3 while i<=3: 4 num=input('请输入数字:') 5 if num.isdigit(): 6 num=int(num) 7 sum+=num 8 print('第{}个数字累加成功!'.format(i)) 9 i+=1 10 else: 11 print('不是数字!') 12 print('sum=',sum)
#join(seq) 以指定的分隔符将 队列(sequence) 中所有元素合并为一个新的字符串.
1 new_str='-'.join('asd') 2 print(new_str)
# ' '.join() 在python 列表中的应用:
1 list1=['a','s','d'] 2 result=''.join(list1) 3 print(result) 4 5 result=' '.join(list1) 6 print(type(result)) #返回的列表是字符串类型
# ljust(width[, fillchar ]) 返回一个原字符串左对齐,并使用fillchar填充长度width的新字符串
# rjust(width,[, fillchar]) 返回一个原字符串右对齐,并用fillchar填充至长度width的新字符串
# fillchar 默认为空格
# lstrip() 截掉字符串左边的空格或指定字符
# rstrip() 截掉字符串右边的空格或指定字符
# strip() 在字符串上执行 lstrip() 和 rstrip()
# maketrans()创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是
# 字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标
# max(str) 返回字符串str中最大的字母
# min(str) 返回字符串str中最小的字母
1 s=' hello ' 2 s=s.lstrip() 3 print(s+'2') 4 5 s=s.rstrip() 6 print(s+'3')
# split('分隔符',切割的次数) 分割字符串,将分割后的字符串保存到列表中。
1 s='hello word hello kitty' 2 result=s.split(' ',2) #按照空格作为分隔符分割字符串2次 3 print(result) 4 5 n=s.count(' ') 6 print('个数:',n)
# string 案例:
#输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符
#方法一:
1 s1=input('请输入第一个字符串:') 2 s2=input('请输入第二个字符串:') 3 s3=' ' 4 for i in s1: 5 if i not in s2: 6 s3+=i 7 print(s3) 8 s1=s3 9 print(s1)
#方法二:
1 s1=input('请输入第一个字符串:') 2 s2=input('请输入第二个字符串:') 3 for i in s2: 4 s1=s1.replace(i,' ') 5 print(s1)
#单词每个都是大写字母,而且没有两个连续相等的字母。
1 word=input('请输入单词:') 2 for i in range(len(word)): 3 if word[i]<'A' or word[i]>'Z': 4 print('不喜欢') 5 break 6 else: 7 if i<len(word)-1 and word[i]==word[i+1]: 8 print('不喜欢') 9 break 10 else: 11 print('喜欢')
#循环提示用户输入用户名,密码,邮箱(要求用户输入的长度不超过20个字符,如果超过则
#打印输出 用户名 密码 邮箱
# Admin 123 hjk@163.com
# Lily 567 yun@163.com
# 如果用户输入 q 或 Q 表示不再继续输入。
1 s=' ' 2 while True: 3 username=input('请输入用户名:') 4 password=input('请输入密码:') 5 email=input('请输入邮箱:') 6 7 username=username[0:20] 8 password=password[0:20] 9 email=email[0:20] 10 msg='{}\t{}\t{}\n'.format(username,password,email) 11 msg=msg.expandtabs(16) 12 s+=msg 13 if username=='q' or username=='Q' or password=='q' or password=='Q' or email=='q' or email=='Q': 14 break 15 print(s)