字符串的内建函数:
声明一个字符串,默认可以调用内建函数(系统准备好的一些函数)
第一部分:大小写相关的
capitalize() title() istitle() upper() lower()
#第一部分:大小写相关的
# capitalize() title() istitle() upper() lower()
message = 'flower is a beautiful'
msg = message.capitalize() #将字符串的第一个字符大写
print(msg)
msg = message.title() #返回的是每个单词的首字母大写
print(msg)
result = message.istitle() #返回结果 布尔类型
print(result)
msg = message.upper() #将字符串全部转成大写的表示形式
print(msg)
msg = msg.lower() #将大写全部转小写
print(msg)
#验证码:
s = 'QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm0987654321'
#四个随机字母
import random
code = ''
print(len(s)) #求字符串长度 len(str),返回值是一个整型的数值
for i in range(4):
ran = random.randint(0, len(s) - 1) #randint(start,end) 起始和结束均包括
#注意字符串索引越界错误:IndexError: string index out of range
code += s[ran]
print(code)
#提示用户输入验证码
user_input = input("请输入验证码:")
if user_input.lower() == code.lower():
print("验证码输入正确")
else:
print("验证码输入错误")
第二部分:查找相关的,替换
find() rfind() lfind() index() rindex() lindex() replace()
#第二部分:查找相关的,替换
#find() rfind() lfind() index() rindex() lindex() replace()
s1 = 'index lucy lucky goods'
result = 'l' in s1
print(result)
position = s1.find('R') #返回值是-1,则代表没有找到
print(position)
position = s1.find('l') #如果可以找到,则返回字母第一次出现的位置
print(position)
#find('要查找的字符',start,end)
p = s1.find('l', position + 1, len(s1) - 5) #也可以指定开始位置查找
print(p)
#获取文件名
url = 'https://www.baidu.com/img/bd_logo1.png'
p = url.rfind('/') #rfind right find 从右侧检索/的位置
print(p)
filename = url[p + 1:]
print(filename)
#获取扩展名
expend_p = url.rfind('.')
expend_name = url[expend_p + 1:]
print(expend_name)
'''
index(str, start=0, end=len(string))
跟find()方法一样,只不过如果str不在字符串中会报一个异常,find找不到返回-1
异常为: ValueError: substring not found
p = 'hello'.index('x')
print(p)
'''
# 替换 replace(old, new, [max]替换次数)
s1 = 'index lucy lucky goods'
s2 = s1.replace(' ', '#')
print(s2)
#去除空格
s2 = s1.replace(' ', '')
print(s2)
第三部分:编码
encode() decode()
#第三部分 编码 encode 编码 decode 解码
#编码 网络应用 (中文一般会涉及编码问题)
msg = "消息,内容" #中文
result = msg.encode('utf-8') #gbk中文 gb2312简体中文 unicode和utf-8国际标准
print(result)
#解码
m = result.decode('utf-8') #编码和解码标准不同,结果不同
print(m)
第四部分:以xxx开头或结尾
startswith() endswith()
判断结尾多用于判断文件格式
#第四部分 以xxx开头或结尾 startswith endswith 返回值都是布尔类型
#判断是否是以xxx开头,或者以xxx结尾
#应用: 文件上传 只能上传图片(jpg,png,bmp,gif)
filename = '笔记.doc'
result = filename.endswith('txt') #filename 是否是以txt结尾
print(result)
s = 'hello'
result = s.startswith('he')
print(result)
#例:只能上传图片(jpg,png,bmp,gif)
#分析:要上传的文件的路径path--->>文件名--->>通过文件名再判断是否是图片类型
while True:
path = input("请输入文件路径:") #例如输入C:\foo\bar\desk_background.jpg
position = path.rfind('\\')
filename = path[position + 1:]
if filename.endswith('png') or filename.endswith('jpg') or filename.endswith('bmp') or filename.endswith('gif'):
print('是图片,允许上传!')
break
else:
print('不是图片格式,只能上传图片!')
第五部分:判断字符串是否是字母 或 数字
isalpha() isdigit()
#判断是否是字母 或 数字
#isalpha() isdigit()
s = 'abcd6'
result = s.isalpha()
print(result)
s = '6687'
result = s.isdigit()
print(result)
#输入数字,并计算其累加和,如果不为数字,不进行累加
sum = 0
for i in range(3): #固定循环次数
num = input("请输入数字:")
if num.isdigit():
num = int(num)
sum += num
print("sum=",sum)
#输入数字,总共输入三个数字进行累加,如果输入不是数字,则重新输入
sum = 0
count = 1
while count <= 3:
num = input("请输入数字:")
if num.isdigit():
num = int(num)
sum += num
count += 1
else:
continue
print("sum=", sum)
第六部分:连接
seq——sequence序列 join()
#连接 join()
#seq——sequence序列
new_str = '-'.join('abc') #将abc用-连接构成一个新字符串
print(new_str)
#python 列表 list=['a', 'v', 'o', '9']
list1 = ['a', 'v', 'o', '9']
result = ''.join(list1)
print(result)
result = ' '.join(list1)
print(result)
print(type(result))
第七部分:去除空格
lstrip()去除字符串左侧空格 rstrip()去除字符串右侧空格 strip()去除字符串两侧空格
# 去除空格 lstrip()去除字符串左侧空格 rstrip()去除字符串右侧空格 strip()去除左右侧空格
s = ' hello '
result = s.lstrip() #去除字符串左侧的空格
print(result + 'a')
result = s.rstrip()
print(result + 'a')
result = s.strip()
print(result + 'a')
第八部分:分割字符串
split(需要按照什么字符作为分隔符,num=string.count(str) 分割的次数)
str.count('-') 字符串str中,包含多少个 -
# split() 分割字符串,将分割后的字符串保存到列表中
#split(需要按照什么字符作为分隔符,num=string.count(str) 分割次数)
s = 'hello world hello kitty'
result = s.split(' ') #遇到空格切割
print(result)
n = s.count(' ') #count(args) 求字符串中指定args的个数 字符串s中空格的数量
print('个数:', n)
result = s.split(' ', 2)
print(result)
练习题:
#需求:输入用户名、密码和邮箱,用户名长度大于20时,只保留前20个字符,输入Q或q退出程序
while True:
username = input("请输入用户名:")
if username.lower() == 'q':
print("退出")
break
password = input("请输入密码:")
email = input("请输入邮箱:")
count = len(username)
#print(username.count("a")) #字符串username中,包含某个字符a的数量
#print("用户名长度:",count)
if count > 20:
username = username[0:20]
list1 = [username, password, email]
print("用户名\t密码\t邮箱\t")
msg = "\t".join(list1) #连接,将列表中所有元素连接
print(msg)
#print("{}\t{}\t{}".format(username, password, email))
#需求:执行程序产生验证码,提示用户输入用户名,密码和验证码,如果正确,则提示登录成功,否则重新输入。(重新输入时产生新的验证码)
import random
s = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm0123456789"
s_length = len(s)
while True:
code = ""
for i in range(4):
r_num = random.randint(0, s_length - 1)
s_c = s[r_num]
code += s_c
print("验证码是:", code)
input_msg = input("请输入验证码:")
if input_msg.lower() == code.lower():
print("登录成功")
break
else:
print("验证失败,请重新输入验证码!")
#需求:输入一行字符,统计其中有多少个单词,每两个单词之间以空格隔开
str_msg = input("请输入字符:")
list1 = str_msg.split(' ')
print("字符中共:{}个单词".format(len(list1)))
index = 1
result = ""
for info in list1:
if index % 2 == 0:
result += info + " "
else:
result += info
index += 1
print(result)
#需求:输入两个字符,从第一字符串中删除第二个字符串中所有的字符。例如:输入"They are students."和"aeiou",则删除之后的第一个字符串"Thy r stdnts".
msg = input("请输入字符:")
str1 = input("请输入第一个字符串:")
str2 = input("请输入第二个字符串:")
for s2 in str2:
for s1 in str1:
if s2 == s1:
str1 = str1.replace(s1, '')
print(str1)
#需求:单词每个字母都是大写字母,单词没有连续相等的字母
str1 = input("请输入单词:")
if str1.isupper():
str_leg = len(str1)
for s in str1:
p = str1.find(s)
if p < str_leg - 1: #从第一位到倒数第二位,最后一位时不用判断
# print("{} ___ {}".format(s, str1[p + 1]))
if s == str1[p + 1]:
print("doesn't like")
break
else:
print("like")
else:
print("doesn't like")