字符串的内建函数:

    声明一个字符串,默认可以调用内建函数(系统准备好的一些函数)

 

第一部分:大小写相关的

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")