2021-08-25 Python之字符串操作
字符串截取:[ ] [ : ]
# 用 [ ] [ : ] 截取字符串。
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)
本文来自博客园,作者:{admin-xiaoli},转载请注明原文链接:{https://www.cnblogs.com/crackerroot}