字符串内建函数
序号 | 方法及描述 | 1 | capitalize() 将字符串的第一个字符转换为大写 | 2 | center(width, fillchar) 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。 | 3 | count(str, beg= 0,end=len(string)) 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 | 4 | bytes.decode(encoding="utf-8", errors="strict") Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。 | 5 | encode(encoding='UTF-8',errors='strict') 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace' | 6 | endswith(suffix, beg=0, end=len(string)) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False. | 7 | expandtabs(tabsize=8) 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 | 8 | find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 | 9 | index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在字符串中会报一个异常. | 10 | isalnum() 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False | 11 | isalpha() 如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False | 12 | isdigit() 如果字符串只包含数字则返回 True 否则返回 False.. | 13 | islower() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False | 14 | isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False | 15 | isspace() 如果字符串中只包含空白,则返回 True,否则返回 False. | 16 | istitle() 如果字符串是标题化的(见 title())则返回 True,否则返回 False | 17 | isupper() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False | 18 | join(seq) 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 | 19 | len(string) 返回字符串长度 | 20 | ljust(width[, fillchar]) 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 | 21 | lower() 转换字符串中所有大写字符为小写. | 22 | lstrip() 截掉字符串左边的空格或指定字符。 | 23 | maketrans() 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 | 24 | max(str) 返回字符串 str 中最大的字母。 | 25 | min(str) 返回字符串 str 中最小的字母。 | 26 | replace(old, new [, max]) 把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。 | 27 | rfind(str, beg=0,end=len(string)) 类似于 find()函数,不过是从右边开始查找. | 28 | rindex( str, beg=0, end=len(string)) 类似于 index(),不过是从右边开始. | 29 | rjust(width,[, fillchar]) 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 | 30 | rstrip() 删除字符串字符串末尾的空格. | 31 | split(str="", num=string.count(str)) num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 | 32 | splitlines([keepends]) 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 | 33 | startswith(substr, beg=0,end=len(string)) 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 | 34 | strip([chars]) 在字符串上执行 lstrip()和 rstrip() | 35 | swapcase() 将字符串中大写转换为小写,小写转换为大写 | 36 | title() 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) | 37 | translate(table, deletechars="") 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 | 38 | upper() 转换字符串中的小写字母为大写 | 39 | zfill (width) 返回长度为 width 的字符串,原字符串右对齐,前面填充0 | 40 | isdecimal() 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false |
大小写相关
capitalize()? title() istitle()?? upper()? isupper()?? lower()? islower()
message = 'zhaorui is a beautiful girl!'
msg = message.capitalize()?? # 将字符串的第一个字符串转成大写的标识形式 print(msg)
msg = message.title()? # 返回的是 每个单词的首字母大写的字符串 print(msg)
result = message.istitle() # 返回的结果是布尔类型的,True False print(result)
msg = message.upper()? # 将字符串全部转成大写的表示形式 print(msg)
result = msg.lower()? # 将大写全部转小写 print(result)
# 案例:验证码案例
s='QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm0987654321'
print(len(s))? # 求字符串长度 len(str),返回值是一个整型的数值
# 四个随机数 code =''
import random
# # IndexError: string index out of range?? s = 'abc'? print(s[3]) # # index: 0~len(s)-1??? 0~61 # 产生四位验证码 for i in range(4):
?? ran = random.randint(0,len(s)-1)? # 获取随机数
?? code += s[ran]?? # code = code + ‘V’?? ---》code='V' 不断拼接到code上
print('验证码:'+code)
# 提示用户输入验证码
user_input = input('请输入验证码:')
if user_input.lower() == code.lower(): ?? print('验证码输入正确!') else: ?? print('验证码错误!')
查找替换相关的
# find()?? rfind()? lfind()?? index()? rindex()? lindex()?? replace()
s1 = 'index lucy lucky goods'
result = 'R' in s1 print(result)
position = s1.find('R')? # 返回值是-1则代表没有找到 print(position)
position = s1.find('l')? # 如果可以找到则返回字母第一次出现的位置 print(position)
# find('要查找的字符',start,end) p = s1.find('o',position+1,len(s1)-5)? # 也可以指定开始位置查找 print(p)
# https://www.baidu.com/img/bd_logo1.png
url= 'https://www.baidu.com/img/bd_logo1.png'
p = url.rfind('/')? # right find? 从右侧检索/的位置 print(p)
filename = url[p+1:] print(filename)
p = url.rfind('.')
kz= url[p+1:] print(kz)
''' index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在字符串中会报一个异常
p = 'hello'.index('x')
print(p)
ValueError: substring not found
'''
# 替换
s1 = 'index lucy lucky goods'
# replace(old,new,[max]) s2 = s1.replace(' ','#') print(s2)
s2 = s1.replace(' ','',2) print(s2)
编码解码
encode? 编码????? decode? 解码
# 编码:? 网络应用? (中文一般会涉及编码问题)
msg = '上课啦!认真听课!'? # 中文的
''' https://www.baidu.com/s?wd=%E4%BB%8A%E6%97%A5%E6%96%B0%E9%B2%9C%E4%BA%8B&tn=SE_PclogoS_8whnvm25&sa=ire_dl_gh_logo&rsv_dl=igh_logo_pcs
''' # gbk 中文?? gb2312 简体中文? unicode
result = msg.encode('utf-8')
print(result)? #?
# 解码 m = result.decode('utf-8') print(m)
# 字符串内建函数: startswith()?? endswith()? 返回值都是布尔类型True False
# startswith判断是否是以xxx开头的,或者 endswith判断是否是以xxx结尾的
# 应用: 文件上传? 只能上传图片(jpg,png,bmp,gif)
filename = '笔记.doc'
result= filename.endswith('doc')? # filename是否是以txt结尾的
print(result)
s = 'hello'
result = s.startswith('he') print(result)
# 文件上传? 只能上传图片(jpg,png,bmp,gif)
# path = input('请选择文件:')? # C:\foo\bar\desk_background.jpg
# # 分析: 要上传的文件的路径path----》文件名-----》通过文件名再判断是否是图片类型 # p = path.rfind('\\')
# filename = path[p+1:]? # 通过切片截取出来文件名
# # 判断是否是图片类型?
# if filename.endswith('jpg') or filename.endswith('png') or filename.endswith('bmp'): #? print('是图片允许上传!') # else: #? print('不是图片格式,只能上传图片!')
''' 练习: 给定一个路径,上传文件(记事本txt或者是图片jpg,png) 如果不是对应格式的,允许重新指定上传文件, 如果符合上传的规定则提示上传成功
'''
# \n? \r? \'? \"? \t? \\ # print(r'aksj\kalsf')
while True: ?? path = input('请选择文件:')? # C:\foo\bar\desk_background.jpg
?? # 分析: 要上传的文件的路径path----》文件名-----》通过文件名再判断是否是图片类型 ?? p = path.rfind('\\')
?? filename = path[p+1:]? # 通过切片截取出来文件名
?? # 判断是否是图片类型?
?? if filename.endswith('jpg') or filename.endswith('png') or filename.endswith('txt'): ????? print('允许上传!上传成功!') ????? break ?? else: ????? print('不是图片格式和记事本格式,上传错误!')
数字字母 ?
isalpha() 是否是字母?? isdigit() 是否是数字
s ='abcd' result = s.isalpha() print("result=",result)
s='6688'
result = s.isdigit() print(result)
# sum = 0 # for i in range(3): # 0,1,2 #? num = input('请输入数字:')? # ll
#? if num.isdigit(): #???? num = int(num)
#???? sum+=num
# print('sum=',sum)
sum = 0 i = 1
# while i<=3: #? num = input('请输入数字:')
#? if num.isdigit(): #???? num = int(num) #???? sum+=num #???? print('第{}个数字数字累加成功!'.format(i)) #???? i+=1 #? else: #???? print('不是数字!')
# print('sum=',sum)
# join() : '-'.join('abc')?? 将abc用-连接构成一个新的字符串
new_str = '-'.join('abc') print(new_str)
# python 列表? list =['a','v','o','9']?? 数组 list1 =['a','v','o','9'] result = ''.join(list1)?? # print(result)
result = ' '.join(list1) print(type(result))
# lstrip??? rstrip? strip?
s ='?? hello??? '
# s= s.lstrip()? # 去除字符串左侧的空格 # print(s+'8')
# s = s.rstrip()? # 去除右侧的空格 # print(s+'8')
s = s.strip() print(s+'8')
# split(‘分隔符’,次数)? 分割字符串,将分割后的字符串保存到列表中
s ='hello world hello kitty'
result = s.split(' ',2)? # 表示按照空格作为分隔符,分割字符串2次 print(result)
n = s.count(' ')? # count(args)? 求字符串中指定args的个数 print('个数:',n)
# s='hfdsjkhfdf;lksd;fk' # s.count('s')
'''
总结
大小写: lower()? upper() 查找: find()?? rfind() 替换: replace() 分割: split() 连接: join() 编码: encode()? decode()的使用 个数: count() 去除空格:? strip()?? lstrip()? rstrip() 用于判断的: startswith()?? 开头判断 endswith()???? 结尾判断 isalpha()????? 字母判断 isdigit()????? 数字判断
'''
print('用户名\t密码\t邮箱')
|